Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1229492749
девушка
2008-12-17 08:45
2009.02.15
почему не вылетало AV ???


2-1230652389
ProgRAMmer Dimonych
2008-12-30 18:53
2009.02.15
Облом с созданием окна


2-1231149365
Iriss
2009-01-05 12:56
2009.02.15
не отображается в трее


2-1231191483
ply
2009-01-06 00:38
2009.02.15
Символ переноса строки в Hint


2-1230637166
Добрый)
2008-12-30 14:39
2009.02.15
Алгоритм?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский