Форум: "Начинающим";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];
Внизdb component and ACSII Найти похожие ветки
← →
bit (2009-01-04 23:58) [0]Проблема при исполнении консольной программы возникает ошибка.
Возможно неправильная декларация TADOQuery.
Это правильная инициализация/декларация :
q1: TADOQuery;
q1:= nil;
?
Цель фоновый процесс который работает с db(mysql) через MySQL connector v3.xx.
Как "заставить" TListViev отображать ACSII кодировку?program ConsoleClient;
{$APPTYPE CONSOLE}
uses
Windows,
Messages,
SysUtils,
...
var
q1: TADOQuery;
SendMailString, sdate, Delimiter, mfname, TmpString: string;
TStringList1, tmpStrList: TStringList;
tmpVal, Str: WideString;
DelimPos: LongInt;
mf1: TextFile;
begin
try
{ TODO -oUser -cConsole Main : Insert code here }
TStringList1:= nil;
q1:= nil;
q1.close;
q1.SQL.Text:="SELECT * FROM mytempdb WHERE Field_1 REGEXP """+somevar+""+"."+""";";
q1.ExecSQL;
q1.Open;
if q1.FieldCount>9 then
begin
while not q1.Eof do
begin
SendMailString:= SendMailString+ (q1.fieldbyname("Field1").text) ;
SendMailString:= SendMailString+ (q1.fieldbyname("Field2").text) ;
SendMailString:= SendMailString+ (q1.fieldbyname("Field3").text) ;
...
q1.Next;
end;
end;
except
on E:Exception do
Writeln(E.Classname, ": ", E.Message);
end;
end.
← →
Плохиш © (2009-01-05 00:43) [1]Судя по "коду", стоит начать с чтения книжки по основам.
← →
bit (2009-01-05 00:58) [2]@1
реализовал большую часть в VCL(программа с формами),
думаю подход должен быть другим
Или можно Copy-Paste (из VCL в Console)?
← →
Плохиш © (2009-01-05 02:01) [3]
> bit (05.01.09 00:58) [2]
>
> @1
>
> реализовал большую часть в VCL(программа с формами),
>
Если эти загогулины, означают ответ на пост 1, то я не это советовал. А без знания основ использования объектов в делфи, ты далеко не уйдёшь, только время потеряешь.
← →
Сергей М. © (2009-01-05 15:02) [4]
> при исполнении консольной программы возникает ошибка
Наверно, секретная ?
> Как "заставить" TListViev
В приведенном коде нет ни малейшего намека на существование TListView
> SELECT * FROM mytempdb
mytempdb - это что, таблица ?
А это
> if q1.FieldCount>9
зачем ?
Ты что, не знаешь сколько в таблице полей ?
И почему при кол-ве полей <= 9 данные из таблицы перестают быть нужны ?
> TStringList1:= nil; //лишнее
> q1:= nil; //лишнее
> q1.close; //полная ерунда - объект не существует, где ты его создаешь ?
>
>
> q1.ExecSQL; //зачем ? это не для селективных запросов
> q1.Open; //
← →
bit (2009-01-05 16:50) [5]
> Наверно, секретная ?program ConsoleClient;
{$APPTYPE CONSOLE}
uses
Windows,
Messages,
SysUtils,
Variants,
Classes,
Graphics,
Controls,
Dialogs,
DB,
ADODB,
StdCtrls,
Buttons,
ComCtrls,
ShellApi,
ExtCtrls;
var // in VCL form -> this object was declarated in TYPE
q1: TADOQuery;
SendMailString, sdate, : string;
tmpVal, Str: WideString;
begin
try
{ TODO -oUser -cConsole Main : Insert code here }
Str:= DateTimeToStr(date());
q1:= nil; // try to initialize
q1.close;
q1.SQL.Text:="SELECT * FROM MyTestTable WHERE Field4 REGEXP """+sdate+""+"."+""";";
q1.ExecSQL;
q1.Open;
if q1.FieldCount>9 then //<--// One Item have 9 subitems= 1 row have 9 fields withdata// if there is no item(include 9 fileds) then ignore
begin
while not q1.Eof do
begin
SendMailString:= SendMailString+ (q1.fieldbyname("First_Name").text)+ #13 ;
SendMailString:= SendMailString+ (q1.fieldbyname("Last_Name").text)+ #13 ;
SendMailString:= SendMailString+ (q1.fieldbyname("Field2").text)+ #13 ;
SendMailString:= SendMailString+ (q1.fieldbyname("Field3").text)+ #13 ;
SendMailString:= SendMailString+ (q1.fieldbyname("Field4").text)+ #13 ;
SendMailString:= SendMailString+ (q1.fieldbyname("Field5").text)+ #13 ;
SendMailString:= SendMailString+ (q1.fieldbyname("Field6").text)+ #13 ;
SendMailString:= SendMailString+ (q1.fieldbyname("Field7").text)+ #13 ;
SendMailString:= SendMailString+ (q1.fieldbyname("Field8").text)+ #13 ;
q1.Next;
end; //while
Writeln("SendMailString", ": ", SendMailString);
Readln;
end;
except
on E:Exception do
Writeln(E.Classname, ": ", E.Message);
//WriteIn("Program terminated due to an exception");
end;
end.
> В приведенном коде нет ни малейшего намека на существование
> TListView
>
Это copy-paste из VCL
← →
Anatoly Podgoretsky © (2009-01-05 17:03) [6]> bit (05.01.2009 16:50:05) [5]
Да не про программу тебя спрашивали, а про ошибку.
← →
bit (2009-01-05 18:19) [7]>>EAccessViolation
т.е не синтаксическая, появляется при исполнении
← →
Сергей М. © (2009-01-05 18:24) [8]
> Это copy-paste из VCL
Не трынди.
В оригинальной VCL не может быть подобной галиматьи.
> EAccessViolation
Объект TADOQuery кто за тебя будет создавать, Пушкин ?
← →
bit (2009-01-05 18:45) [9]
> Объект TADOQuery кто за тебя будет создавать, Пушкин ?
если так правильно то,
q1.Create(TOwner: Лермонтов или кому(TComponent) его назначить)
или как его создавать?
>>отличие от VCL что в Console app не проходит TYPE
← →
Сергей М. © (2009-01-05 18:50) [10]
> как его создавать?
q1 := TADOQuery.Create(не важно кто);
> отличие от VCL что в Console app не проходит TYPE
Ты сам-то понял что сказал ?
Давай уже садись и читай учебники.
← →
bit (2009-01-05 19:37) [11]
> Давай уже садись и читай учебники.
OK,
>>q1 := TADOQuery.Create(не важно кто);
q1 := TADOQuery.Create(TComponent ); //????
error: [DCC Error] ConsoleClient.dpr(74): E2010 Incompatible types: "TComponent" and "Class reference"
← →
Сергей М. © (2009-01-05 19:40) [12]Вместо TComponent укажи nil.
Тебя эта затычка, конечно, не спасет, но E2010 на этой строчке исчезнет.
← →
Amoeba © (2009-01-05 19:42) [13]
> bit (05.01.09 19:37) [11]
>
>
> > Давай уже садись и читай учебники.
>
> OK,
Плохо читал. Читай еще и так до полного просветления.
← →
bit (2009-01-05 19:51) [14]
> до полного просветления.
LOL
кажется жизнь легче с VCL чем с ограничениями в Colsole
>> так TListView может отображать ACSII кодировку? если да то как поменять ее?
← →
Amoeba © (2009-01-05 19:53) [15]
> bit (05.01.09 19:51) [14]
>
>
> > до полного просветления.
>
> LOL
>
> кажется жизнь легче с VCL чем с ограничениями в Colsole
>
> >> так TListView может отображать ACSII кодировку? если
> да то как поменять ее?
LMD!
← →
bit (2009-01-05 19:56) [16]Сергей М- спасибо, не думал но твой nil спас ситуацию
а есть еще альтернативы? (nil = brute force)
← →
Сергей М. © (2009-01-05 19:59) [17]
> ограничениями в Colsole
Нет там никаких ограничений, не трынди.
> TListView может отображать ACSII кодировку?
Может.
← →
bit (2009-01-05 20:11) [18]
> Нет там никаких ограничений, не трынди.
Почему тогда ругается когда пишешь type q1: TADOQuery; .etc после uses и до var? Тожесамое разрешено в VCL. А как свою иконку назначить в console? (в vcl в project->pref->etc)
> Может.
А по конкретнее? свойства ,,,
← →
Сергей М. © (2009-01-05 20:17) [19]
> Почему тогда ругается когда пишешь type q1: TADOQuery; .
> etc после uses и до var? Тожесамое разрешено в VCL
Не трынди, не разрешено.
Правила Паскаля едины для любого Паскаль-приложения, будь оно хоть VCLное, хоть консольное, хоть на Луне.
> как свою иконку назначить в console?
Какие тебе "иконки", если у тебя проблемы со знанием азов выбранного тобой языка программирования ?
> по конкретнее?
Сначала ответь "по конкретнее" на вопрос, какое отношение вышеприведенный тобой код имеет к TListView
← →
Плохиш © (2009-01-05 20:23) [20]Хм, так многа букав появилось в ветке, а результат всё тот же, что и в [2]...
← →
Anatoly Podgoretsky © (2009-01-05 20:27) [21]
> Сначала ответь "по конкретнее" на вопрос, какое отношение
> вышеприведенный тобой код имеет к TListView
Слово красивое.
← →
bit (2009-01-05 20:30) [22]>ACSII это из vcl
procedure TForm1.BitBtn1Click(Sender: TObject); //
var
li:tlistitem; // !!!!!
query: string;
begin
q1.SQL.Text:=memsql.lines.text;
//q1.SQL.Text:="select * from mytable";
q1.Open;
query:="";
while not q1.Eof do
begin
li:=lv.Items.Add;
li.Caption:=q1.fieldbyname("First_Name").Value;
li.SubItems.Add(q1.fieldbyname("First_Name").text);
li.SubItems.Add(q1.fieldbyname("Last_Name").text);
li.SubItems.Add(q1.fieldbyname("-2-").text);
li.SubItems.Add(q1.fieldbyname("-3-").AsString);
li.SubItems.Add(q1.fieldbyname("-4-").AsString);
li.SubItems.Add(q1.fieldbyname("-5-").AsString);
li.SubItems.Add(q1.fieldbyname("-6-").AsString);
li.SubItems.Add(q1.fieldbyname("-7-").AsString) ;
li.SubItems.Add(q1.fieldbyname("-8-").AsString) ;
q1.Next;
end;
end;
в настройках db и исходной таблицы стоит ACSII.
а listview отображает некорректно
← →
Сергей М. © (2009-01-05 20:51) [23]
> в настройках db и исходной таблицы стоит ACSII
Какими средствами и где ты это увидел ?
СУБД какая ?
← →
bit (2009-01-05 21:07) [24]1. navicat portable (здесь все норм отобр)
2. mysql
+ mysql connector v3 (может он "односторонний"? только utf-8 пропускает?)
← →
Сергей М. © (2009-01-05 21:10) [25]см. System.Utf8ToAnsi()
← →
bit (2009-01-05 21:26) [26]
> System.Utf8ToAnsi()
это если уверен что mysql connector возвращает utf-8
в данном случае нет. может koi ili unicode...???
← →
bit (2009-01-05 21:40) [27]пробовал настроить mysql connector->Character set на ASCII но
"can"t initialize character set ascii (path: C:\folder\MYSQLfolder)"
← →
bit (2009-01-06 09:32) [28]@27 solved
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.006 c