Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.02.15;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.014 c
8-1187889577
solo.maestro
2007-08-23 21:19
2009.02.15
Замена звуковой дорожки в видеофайле


11-1196085008
Barloggg
2007-11-26 16:50
2009.02.15
Как сделать скрытую форму


6-1198858897
Jimmy
2007-12-28 19:21
2009.02.15
Игра через интернет


2-1231144302
zzz
2009-01-05 11:31
2009.02.15
SysMenu


15-1229711796
Кто б сомневался
2008-12-19 21:36
2009.02.15
Регистрация частного предпринимателя для продажи программ