Приветствую, братья по разуму! (сам "эксперт") :) Вопрос следующий: Программированием занимаюсь пять лет, с БД работал, но совсем немного, и только из Дельфы с PARADOX-офскими... Возникла необходимость поработать с MySQL. Знаю, что ничего сложного, но все же дайте, кто знает и кому не жалко, линки на факи и/или справочные руководства (или учебники) по сабжу.
Добрый день, Jact M Anchorite! Yest dva MySQL-ov Graphic i Non-Graphic! No rabota s nimi (i ixninaya) odinakoviye. Qlavnoye chto tebe nujno eto znat (viuchit) SQL, a ostalnoye yerunda, linki mojesh nayti daje v yandexe Odin sovet: ispolzovay luchshe dbExpress, a to BDE eto ne delo! Ответ отправлен: 18.10.2003, 19:44 Отправитель: Cybernetic Creature Отвечает Илья
Доброе время суток, Jact M Anchorite! Сходи на SQL.ru Там много всего интересного по теме. Ответ отправлен: 16.10.2003, 08:18 Отправитель: Илья Отвечает sir henry
Доброе время суток, Jact M Anchorite! Наверное проще всего будет работать через драйвер ODBC MySQL (можно скачать с сайта производителя). Через BDE, работа с MySQL ничем не будет отличаться от работы с PARADOX'ом (на то оно и BDE :)). Однако, с SQL серверами рекомендуют работать через ADO, вроде как быстрее. Еще есть компонент dbExpress - специально для работы с SQL-серверами InterBase, MSSQL, MySQL, DB2 и еще с какими-то. Документацию и статейки можно найти на сайте "Королевство Дельфи (www.delphikingdom.com - ADO, dbExpress) и www.delphimaster.ru - там много статей и компонентов. Ответ отправлен: 16.10.2003, 13:40 Отправитель: sir henry
Вопрос № 1032
Доброе время суток! Уважаемые эксперты, подскажите пожалуйста,(может кто встречал), такая проблема, необходимо сохранить почтовые сообщения, скажем в html формате (каждое), это конечно можно, "Сохранить как.." скажем, а если их 1000 :( , так вот, может есть софтина какая, или придется ваять свою..., или есть еще способ какой? Заранее благодарен! С уважением Vit...
Доброе время суток, Vit! 1. А в чем они у тебя, в ОЕ или бате? 2. Выдели их все и сохрани - должен получиться один большой файл. 3. Если это не подойдет, можно вытащить письма из базы или написать прогу (например, на перле), которая разделит большой файл.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 17.10.2003, 21:54 Отправитель: Bob Johnson Отвечает Cybernetic Creature
Доброе время суток, Vit! Вопрос не понятень. что через оутглюк? откуда взять эти письма. обясни нормально Ответ отправлен: 18.10.2003, 19:44 Отправитель: Cybernetic Creature Отвечает ART_43
Доброе время суток, Vit! http://labs99.msk.ru/dbx Ответ отправлен: 16.10.2003, 12:37 Отправитель: ART_43 Отвечает Артём Шегеда
Здравствуйте, Vit!
Я использую плагин для Far'а для просмотра почтовых баз OutlookExpress. Взять можно здесь: DBX.fmt Ответ отправлен: 16.10.2003, 13:04 Отправитель: Артём Шегеда
Вопрос № 1033
Помогите пожалуйста. Как сделать дозвон по модему из программы. Т. е. не входить в "Удаленный доступ", "Соединение 1" и т. д. а нажал кнопку, пошел дозвон до провайдера. То что так делают - это точно, только вот КАК? Заранее благодарен. Алексей.
Приветствую Вас, Алексей! Надо изучить функции RAS API. Кажется, неплохая статья с их описанием была на http://www.delphiworld.narod.ru/ Ответ отправлен: 17.10.2003, 08:17 Отправитель: Marouder Отвечает CJ
Доброе время суток, Алексей! Есть много исходников! Ответ отправлен: 16.10.2003, 21:11 Отправитель: CJ Отвечает Bob Johnson
Приветствую Вас, Алексей! См. в сторону RASDial.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 17.10.2003, 21:54 Отправитель: Bob Johnson Отвечает Cybernetic Creature
Unit Telefon; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TCPort = (COM1,COM2,COM3,COM4); TDMethod = (dmTone,dmPulse); TTelefon = class(TComponent) private { Private declarations } hPort: LongInt; FCPort : TCPort; FTelNumber : string; FDMethod : TDMethod; FInitStr : string; protected { Protected declarations } function Open: Boolean; function Write(const Podaci: String): Boolean; procedure Close; public { Public declarations } constructor Create(AOwner : TComponent); override; destructor Destroy; override; procedure Dial; published { Published declarations } property CPort : TCPort read FCPort write FCPort; property InitStr :
string read FInitStr write FInitStr; property DMethod : TDMethod read FDMethod write FDMethod; property TelNumber : string read FTelNumber write FTelNumber; end; procedure Register; implementation procedure Register; begin RegisterComponents('Agil1', [TTelefon]); end; constructor TTelefon.Create(AOwner: TComponent); begin inherited Create(AOwner); { set default property values } hPort := INVALID_HANDLE_VALUE; { default value is invalid} FCPort:=COM2; FDMethod:=dmTone; FInitStr:=''; FTelNumber:='1234'; end; destructor TTelefon.Destroy; begin inherited Destroy; { destroy ancestor class } end; { Close the COM port } procedure TTelefon.Close; begin if hPort <> INVALID_HANDLE_VALUE then CloseHandle(hPort);
hPort := INVALID_HANDLE_VALUE; end; function TTelefon.Open:Boolean; var Port,Poruka:string; Prekini:Boolean; begin Prekini:=False; Port:=''; Poruka:=''; case FCPort of COM1: Port:='COM1'; COM2: Port:='COM2'; COM3: Port:='COM3'; COM4: Port:='COM4'; end; if hPort<>INVALID_HANDLE_VALUE then Close; repeat begin hPort:=CreateFile(PChar(Port),GENERIC_READ or GENERIC_WRITE,0,nil, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,LongInt(0)); if hPort=INVALID_HANDLE_VALUE then begin Poruka:='Error opening ' + Port; if MessageDlg(Poruka,mtWarning,[mbAbort,mbRetry],0)=idAbort then Prekini:=True else Prekini:=False;
end; end; until (hPort<>INVALID_HANDLE_VALUE) or (Prekini=True); Result:=(hPort<>INVALID_HANDLE_VALUE); end; function TTelefon.Write(const Podaci: String): Boolean; var Zapisani: DWord; begin Zapisani := 0; Result := False; { False is default } if hPort <> INVALID_HANDLE_VALUE then begin WriteFile(hPort, PChar(Podaci)^, Length(Podaci), Zapisani, nil); if Zapisani = Length(Podaci) then Result := True; end; end;
procedure TTelefon.Dial; const mbsAbort=[mbAbort]; var s:string; begin //Openning port if Open=False then begin //operation failed MessageDlg('Not able to open port ',mtError,[mbOk], 0); Exit; end; //InitString is being sent, ig there is one if FInitStr<>'' then begin s:=FInitStr+^M^J; if Write(s)=False
then begin //Operation failed MessageDlg('Error initializing modem ',mtError,[mbOk], 0); Close;//Closing port and exiting Exit; end; end; //Another chance to change our mind { if MessageDlg('About to dial: '+FTelNumber+'. Are you sure?', mtConfirmation, [mbYes,mbNo], 0)<>mrYes then begin Close; Exit; end; } //Creating dial string s:=Concat('ATDP',FTelNumber,^M^J); if FDMethod=dmTone then s[4]:='T'; //Writing to a port if Write(s)=False then begin MessageDlg('Error dialing number ',mtError,[mbOk], 0); Close; //Closing port and exiting Exit; end else begin //If everythin so far is OK { if Application.MessageBox('Pick up the receiver','Dialing...' ,MB_TASKMODAL+MB_OK)} if MessageDlg('Dialing..'+FTelNumber,mtInformation,
mbsAbort,0)= IDABORT then Write('ATH'^M^J); end; end;
end.
Ответ отправлен: 18.10.2003, 19:47 Отправитель: Cybernetic Creature Отвечает _vt
Здравствуйте, Алексей! Функции RAS API это конечно хорошо... Но можно сделать гораздо проще, нужна всего одна функция из wininet.dll InternetAutodial(INTERNET_AUTODIAL_FORCE_ONLINE, hWndParent) и появится окно выбора соединения...
*** E-Man - we are waiting for you ***
Ответ отправлен: 17.10.2003, 12:09 Отправитель: _vt
Вопрос № 1034
Здравствуйте! У меня к вам вопрос: Я сделал компонент и он отображается на панели компонентов с рисунком по умолчанию. Как при установке собственого компонента изменить рисунок? Заранее Большое Спасибо!
Здравствуйте, Nick! Не совсем понятен вопрос :)). Видимо у компонента есть параметр отвечающий за рисунок. Необходимо этому параметру присвоить нужное значение. Ответ отправлен: 17.10.2003, 08:25 Отправитель: sir henry Отвечает Cybernetic Creature
Приветствую Вас, Nick! Нужно создать с помощью программы ImageEditor Component Resource (.dcr). Потом создать Bitmap с названием вашего класса например TMyComponent. нарисовать там что-то и сохранить в файл под названием <имя модуля>.dcr. и добавить это в пакет. и скомпилировать Ответ отправлен: 18.10.2003, 19:45 Отправитель: Cybernetic Creature
Вопрос № 1035
Есть начальный шаблон Дельфи для формы.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} end.
В какую часть мне надо добавить функцию обратного вызова, чтобы все работало корректно.
Здравствуйте, Дмитрий! Что-то непонятно ты написал - какая функция обратного вызова? Callback? Зачем? У тебя и так все работает...
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 17.10.2003, 21:54 Отправитель: Bob Johnson Отвечает sir henry
Приветствую Вас, Дмитрий! В раздел TYPE. Если функцию предполагается использовать только в пределах одного модуля, то можно ее написать в разделе Implementation, а если и в других модулях, то конечно в interface :)). Type MyCallBackFunc = ThisFunction(param1, param2: Type): Type; stdcall; Ответ отправлен: 20.10.2003, 04:15 Отправитель: sir henry Отвечает Marouder
Приветствую Вас, Дмитрий! Какую еще функцию обратного вызова? Че-то ты затупил. Ответ отправлен: 18.10.2003, 05:04 Отправитель: Marouder Отвечает Cybernetic Creature
Добрый день, Дмитрий! В секцию Public. Ответ отправлен: 18.10.2003, 19:45 Отправитель: Cybernetic Creature
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.