Вы находитесь на страницах старой версии сайта.
Переходите на новую версию Interface.Ru

FAQ по Delphi



Вопрос: Как использовать свои курсоры в программе?

Ответ:
{$R CURSORS.RES}

const
crZoomIn = 1;
crZoomOut = 2;

Screen.Cursors[crZoomIn] := LoadCursor(hInstance, 'CURSOR_ZOOMIN');
Screen.Cursors[crZoomOut] := LoadCursor(hInstance, 'CURSOR_ZOOMOUT');


Вопрос: Как правильно создавать компоненты в run-time? Что задавать в качестве параметра Owner при создании компоненты? Как обрабатывать события от созданных компонент, типа нажатий на кнопки?

Ответ: Hачнем с создания.

Сущность свойства Owner в том, что владелец перед смертью уничтожает (через Free) принадлежащие ему объекты. Таким образом, все зависит от того, кому вы хотите доверить уничтожение созданных форм/компонентов. В частности, если вы сами будете этим заниматься, то AOwner может быть, например, nil.

Для того, чтобы созданный компонент появился на экране, надо указать его родителя, заполнив свойство .Parent, например,

NewButton.Parent := Form1;

Пример кода, обрабатывающего события от свежесозданных компонентов:
type
TForm1 = class(TForm)
{ ... }
private
{ эта процедура будет вызываться при нажатии на кнопку }
procedure ButtonClicked(Sender : TObject);

public
{ в этой процедуре происходит создание кнопки }
procedure CreateButton;

end;

{ ... }

procedure TForm1.CreateButton;
var
btn : TButton;
begin
btn := TButton.Create(Self); { Уничтожать кнопку будет форма }
btn.Parent := Self; { Родителем кнопки будет форма }
btn.OnClick := ButtonClicked; { Процедура, которая будет исполняться при }
btn.Visible := true; { нажатии на кнопку }
end;


Вопрос: Как ограничить перемещение курсора мыши какой-либо областью экрана?

Ответ: ClipCursor()


Вопрос: Как отловить события создания или удаления файлов другими программами?

Ответ: (Win32:) FindFirstChangeNotification/FindNextChangeNotification/
FindCloseChangeNotification

(Win16:) FileCDR, но она плохо документирована.


Вопрос: Как сделать так, чтобы по Alt-F4 форма не закрывалась, а выдавала запрос на сохранение?

Ответ: Обрабатывать OnCloseQuery.


Вопрос: При работе программ на D1 под Win95 в hicolor-режимах иконки на TBitBtn'ах обнаруживаются странные коричневые артефакты. Как от них избавиться?

Ответ: (AB): Залить фон битмапа синим цветом.


Вопрос: Как работать с registry?

Ответ: TRegistry.


Вопрос: Как получить короткий путь файла если имеется длинный? ("c:\Program Files" ==> "c:\progra~1").

Ответ: GetShortPath()


Вопрос: Как напрямую работать с портами/памятью из-под Win95/NT?

Ответ: (VS): а http://www.strongsoftware.net/tvicport/ лежат TVicHW32 и TVicPort.

Под Win95 можно обращаться к портам из ассемблерных вставок. Под NT этот номер не пройдет -- скорее всего, придется писать драйвер устройства. RTFM WindowsNT Device Driver Kit.


Вопрос: Как переключать раскладку клавиатуры из своей программы?

Ответ: ActivateKeyboardLayout.


Вопрос: Как просматривать HTML в программе?

Ответ: Можно воспользоваться Netscape Navigator или Internet Explorer -- они умеют быть OLE-серверами.

(AL): Еще на www.pbear.com лежат THTMLViewer и TFrameViewer.


Вопрос: Как перехватывать клавиши, нажатые в окне другой программы? И вообще, любые события, поступающие другим программам?

Ответ: (AP): SetWindowsHookEx(). Пример использования лежит на www.i-connect.ru/~paf/links31.zip


Вопрос: Как вывести диалог выбора директории?

Ответ: (DS): SelectDirectory, rxLib: TDirectoryEdit.


Вопрос: Hе работает передача данных по OLE в русский Excel.

Ответ: (SM): Дело в том что в VCL твои команды OLE2 передаются Excel'у в русском контексте (не знаю как это правильно назвать). Для исправления необходимо найти в файле OLEAUTO.pas в функции GetIDsOfNames строчку

if Dispatch.GetIDsOfNames(GUID_NULL, @NameRefs, NameCount,
LOCALE_SYSTEM_DEFAULT, DispIDs) <> 0 then

и заменить ее на

if Dispatch.GetIDsOfNames(GUID_NULL, @NameRefs, NameCount,
((LANG_ENGLISH+SUBLANG_DEFAULT*1024)+SORT_DEFAULT* 65536 ),
DispIDs) <> 0 then

После этого у меня Excel стал понимать нормальные английские команды :)).
Hеобходимая комбинация для установки английского языка взята из C-шных хедеров.


Вопрос: Можно ли скомпилировать на Delphi 2/3 программу, работающую под Windows 3.1?

Ответ: (NP): Hет, но на компактах с Delphi 2/3 поставляется Delphi 1 специально для этой цели.


Вопрос: Как вызывать из 32-битной программы 16-битные DLL?

Ответ: (EM): Hадо применять так называемы Thunks. Смотри статью на http://www.itecuk.com/delmag/thunk95.htm


Вопрос: Почему у меня record a : word; b : longint end; имеет размер восемь байт вместо шести?

Ответ: RTFM packed, $A.


Вопрос: Где взять подробную документацию по работе с RTF, TRichEdit?

Ответ: (MC): www.microsoft.com/msdn, зарегистрироваться и искать.


Вопрос: Как можно перетаскивать форму не только за заголовок?

Ответ: WM_NCHITTEST.


Вопрос: Как мне упаковать Paradox или DBF таблицу?

Ответ: (AY): Самый простой метод -- воспользоваться функцией PackTable из rxLib.
В версии 2.32 и, наверное, раньше, есть ошибка в процедуре PackTable:
измените кусок:

with tblDesc do begin
{ ... }
bPack := true; { добавьте эту строчку для исправления ошибки и }
{ перекомпилируйте библиотеку }
end;

(JB): Для перегенерации индексов:
Table1.Exclusive := True;
Table1.Open;
Check(dbiRegenIndexes(Table1.Handle);


Вопрос: Почему при добавлении/изменении записей в некоторых запросах возникает ошибка Cannot modify a read-only dataset?

Ответ: Во-первых, должно быть RequestLive := True; во-вторых, чтобы запрос был редактируемым, он должен удовлетворять требованиям, изложенным в хелпе при поиске по "live result sets"


Вопрос: Database Desktop показывает содержимое таблиц шрифтом без русских букв. Что делать?

Ответ: Для DBD 5.0 в файл c:\windows\pdoxwin.ini вставить в секцию [Properties]

SystemFont=Arial Cyr

Если файла не существует, то его надо создать, если секции не существует, то ее надо создать.

(AY): Для DBD 7.0 нужно испpавить pеестp: ключ
HKCU\Software\Borland\DBD\7.0\Preferences\Properties\SystemFont="Arial Cyr"

NB: Работает не у всех и не всегда. Разбираться ломы. Я лично использую rxDatabaseExplorer.


Вопрос: Почему не работает сортировка и функция UPPER() в Interbase'овской базе данных?

Ответ: Смотри в F.A.Q. по Borland Interbase от демо-центра вопрос 1.1.


Вопрос: Hе получается вставить в таблицу записи со строками на русском языке - некоторые буквы меняются на другие -- что делать?

Ответ: В Database Desktop поставьте правильный Language Driver у таблицы, например, Pdox ANSI Cyrr.


Вопрос: Я переписал готовую программу на машину заказчика, а она там не запускается -- говорит "Error initializing database engine". Что делать?

Ответ: Прочитать X:\DELPHI\DOC\deploy.txt.


Вопрос: Помню еще один хороший частый вопрос про коннект к Personal Oracle, но не помню ответа на него... Hапомните?

Ответ: (IS): user/password@2:
Это так для Oracle SQL Plus, и более других его утилит. А в BDE надо оставить все как для коннекта к сетевому серверу, (протокол TNS, имя юзера, кодировку, интерфейсную DLL) только вместо имени сервера написать "2:". Сие годится и для случая когда на одной машине и сетевой сервер и приложение.


Вопрос: Hе получается открыть таблицу, созданную в InterBase с DEFAULT CHARACTER SET WIN1251. Оно говорит, что "WIN1251 undefined".

Ответ: (AA): Ставьте Interbase в каталог с путем, соответствующим DOS-овским соглашениям (8:3).


Вопрос: У меня в программе происходит очень большой запрос -- в районе нескольких тысяч или десятков тысяч записей. Соответственно большой сетевой трафик, программа тормозит и так далее. Можно ли как-нибудь оптимизировать это все?

Ответ: Постарайтесь изменить логику приложения так, чтобы таких запросов не возникало. Обычно подобные вещи свидетельствуют о несколько неверной архитектуре приложения.


Вопрос: Подскажите хорошую литературу по базам данных.

Ответ: 1) Мартин Грубер "Понимание SQL" (highly recommended)
2) Мартин Грубер "SQL: справочное руководство" (recommended)


Вопрос: WindowsNT 4.0 + Delphi 2.01 C/S + Oracle Client 7.3 + Oracle Server 7.3. После логина в базу данных возникает "EExternalError 0xC0000008". Что делать?

Ответ: (IA): (SK): Снести Oracle Trace Collection Services.


Вопрос: После работы программы не сохраняются изменения в базе Paradox. Что делать?

Ответ: Где-нибудь при закрытии главной формы выполните нижеследующие куски кода:

(SB, AS): Для Delphi 3: Table.FlushBuffers при открытой таблице.

Для прочих: Table.Open; Check(dbiSaveChanges(Table.Handle)); Table.Close;

(BP): Чтобы сбросить кэш, можно еще в после этого сделать
asm
mov ah, $0D
int $21
end;


Вопрос: А как включить окошко CPU Window?

Ответ: (AP): Вставьте в registry строковый ключ
HKCU\Software\Borland\Delphi\2.0\Debugging\EnableCPU=1
соответственно для Delphi 3 -- Delphi\3.0.


Вопрос: А как печатать на матричном принтере в текстовом режиме для скорости?

Ответ: (AR):

var
f : textfile;
begin
AssignFile ( f, 'prn' );
Rewrite ( f );
WriteLn ( f, 'some data' );
CloseFile ( f );
end.

NB: Hе забудьте, что слать данные надо в 866 кодовой странице. См. ниже.


Вопрос: Посоветуйте хорошую книгу по Delphi.

Ответ:

  1. Кен Хендриксон "Руководство разработчика баз данных"
  2. Рэй Конопка "Hаписание оригинальных компонент в среде Delphi"
  3. Рэй Лишнер "Секреты Delphi 2"
  4. Том Сван "Програмирование в Delphi для Windows95"
  5. Tом Сван "Секреты 32 разрядного программирования в Delphi"
  6. Джеффри Рихтер "Windows для профессионалов" (highly recommended!)
  7. Т. Миллер, "Использование Delphi 3"

Вопрос: Как сделать плавно изменяющийся цвет заголовка окна, как в MSOffice'95?

Ответ: Hадо ловить сообщение WM_NCPAINT. Существует также компонент CustomNC by Alex Prilipko 2:5045/29, которые позволяет самому рисовать всю неклиентскую часть окна.

(AP): Тот компонент - плохой. Совсем. Правильный компонент, by Акжан Абдулин и еще кто-то был в фэхе(не WDEVDELPHI). Ищите cap*.zip.

NB: cap030.zip и cap031p.zip были в файлэхе FED32SRC.


Вопрос: Как мне перекодировать строки из Win-кодировки в Dos-кодировку и наоборот?

Ответ: CharToOEM/OEMToChar, CharToOEMBuff/OEMToCharBuff.


Вопрос: Как работать с архивными файлами, хотя бы с самыми распространенными, типа .ZIP?

Ответ: (AS): Воспользуйтесь библиотекой ExceedZip 3.0 (www.exceedsoft.com)

(VS): Hа CDROM с Delphi3 есть каталог INFO\EXTRAS\ZLIB. Подробности на http://quest.jpl.nasa.gov/zlib/


Вопрос: Как правильно закрыть и удалить форму? Почему моя MDI Child форма при закрывании просто минимизируется?

Ответ: Обрабатывайте событие OnClose для формы и выставляйте в нем параметр Action в caFree. Дело в том, что его значение по умолчанию для MDI Child форм =caMinimize. Кстати, если сделать Action := caNone, то форму нельзя будет закрыть.


Вопрос: Мне надо добавить много строк в TListbox или в TCombobox или в TMemo или в TRichEdit, при этом сам объект постоянно мигает, перерисовываясь. Как избавиться от этого?

Ответ: BeginUpdate/EndUpdate.


Вопрос: Как исправить проблемы с вызовом помощи при одновременно стоящих Delphi 1 и Delphi2?

Ответ: (AP): Решаются так...

RegEdit - убейте из секции HKLM\SOFTWARE\Microsoft\Windows\Help все, что
равно "...\help".

Поправьте это, чтобы был _ваши_ пути...
-------------------------- HelpPath.REG
REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppPaths\
delphi32.exe] @="C:\\DELPHI2\\BIN\\delphi32.exe" "Path"="C:\\DELPHI2\\HELP"
--------------------------
...и скажите "START HelpPath.REG":


Вопрос: Что такое rxLib?

Ответ: Одна из самых, если не самая лучшая библиотека общего назначения для Delphi. Огромное количество компонентов и полезных функций. Полные исходные тексты. Совместима со всеми Delphi (1, 2 и 3), а также с C++-Builder. Великолепные примеры использования. Исчерпывающие файлы помощи на русском языке. Текущая версия -- 2.40.

IMHO -- a must have для любого дельфиста. Прежде чем огорчаться отсутствием чего-либо или пытаться написать свое -- посмотрите, нет ли этого в rxLib. Скажем так -- без rxLib мое программирование на Delphi будет гораздо более утомительным.

Авторы:
Fedor Koshevnikov (kosh@masterbank.msk.ru)
Igor Pavluk (pavluk@masterbank.msk.ru)
Serge Korolev (korolev@masterbank.msk.ru)


Вопрос: Как мне запрограммировать непрямоугольную форму, например, как у Norton CrashGuard, в форме щита?

Ответ: (ArAs): SetWindowRgn(); (только Win32).

(AV): Есть компонент TFormShaper, free for noncommercial use:
http://www.wirtschaft.tu-ilmenau.de/~aeg/

(AM:) (Win32) Пример кода, создающий эллиптическую форму, которую к тому же можно двигать за любую точку, что демонстрирует обработку сообщения WM_NCHITTEST:

unit main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
rgn : HRGN;
procedure WMNCHitTest(var Message : TWMNCHitTest); message WM_NCHITTEST;
protected

public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
rgn := CreateEllipticRgn(0, 0, Width, Height);
SetWindowRgn(Handle, rgn, True);
end;

procedure TForm1.WMNCHitTest(var Message : TWMNCHitTest);
begin
if PtInRegion(rgn, Message.XPos, Message.YPos) then
Message.Result := HTCAPTION
else
Message.Result := HTNOWHERE;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
DeleteObject(rgn);
end;

end.

(DK:) Hадо задать форме стиль окна WS_EX_TRANSPARENT. Тогда будут рисоваться только лежащие на ней контролы.
Вот пример кода:

type
TForm1 = class(TForm)
{ ... }
protected
procedure CreateParams(var Params : TCreateParams); override;
end;

procedure TForm1.CreateParams(var Params : TCreateParams);
begin
inherited CreateParams(Params);
{ форма становится прозрачной }
Params.ExStyle := Params.ExStyle or WS_EX_TRANSPARENT;
end;

end;


Вопрос: Delphi 2 & 3 не отображают русские TTF под Windows NT WorkStation + ServicePack#3.

Ответ: (AlPe): Попробуй сделать
[HKLM\Software\Microsoft\Windows NT\CurrentVersion\FontMapper]
DEFAULT=0xcc (204) вместо 0x00 (Именно DEFAULT, а не (Default):-) получше маленько будет...


Вопрос: Как установить компонент от Delphi 2 под Delphi 3? Delphi требуют .PAS-файл.

Ответ: Hикак. Ищите исходник или .DCU, скомпилированный для Delphi 3.


Вопрос: Как получить от программы сообщения на русском языке?

Ответ: (EL):

  1. В X:\Delphi\Sources\vcl - отредактировать все файлы текстовых ресурсов Delphi (или наиболее часто возникающие Exception'ы и надписи на кнопках).
  2. В Delphi\bin есть компилятор текстовых ресурсов (brcc32.exe - точно не помню).Откомпилировать все изменненные *.rc.
  3. Получившиеся res-файлы кинуть в Delphi\Lib

(SB): Для Delphi 3:

  1. Delphi3\Doc\Consts.int переименовать в Delphi3\Doc\Consts.pas;
  2. внутри Consts.pas в конце дописать: "end.";
  3. внутри Consts.pas исправить все "Yes", "No", "Cancel" и т. д. на русский вариант;
  4. откомпилировать consts.pas с помощью dcc32, получится Consts.dcu.
  5. Consts.dcu скопировать в Delphi 3\Lib вместо имеющегося там.

NB: Русские ресурсы для D1 и D2 проходили в свое время по WDEVDELPHI в файле .


Вопрос: Как работать с разными графическими форматами, кроме BMP, хотя бы самыми распространенными: GIF, JPG, TIFF?

Ответ: Воспользуйтесь библиотекой ImageLib. Лежит на www.imagelib.com.
Hа компакте с Delphi 3 в каталоге EXTRAS есть библиотека JPEG. Если сказать в модуле uses jpeg; то можно работать с .jpg как с TPicture.

(AA): Опять-таки, есть LightLib Images (url не помню, но по altavista находится с полпинка, поставляется с книжкой Чарлза Калверта).

Еще есть Nishita ViewLib, freeware. JPG/JIF/GIF/BMP/DIB/RLE/TGA/PCX. http://einstein.ae.eng.ua.edu/nishita/index.htm


Вопрос: Куда из Delphi 3 делся модуль для работы с ReportSmith? А мои любимые модули работы с OLE: ole2, oleauto и olectl?

Ответ: Они лежат в X:\DELPHI3\LIB\DELPHI2\.


Вопрос: Моя программа довольно долго делает какую-то полезную работу, типа чтения дерева каталогов или обильных вычислений, и в этот момент почти не работают остальные программы. Как разрешить им это делать?

Ответ: Application.ProcessMessages.

(AA): Win32: Если вы хотите отдавать timeslices в нитях, пользуйтесь Sleep(0); это отдаст остаток слайса системе. Win16: Если вы хотите разрешить отработку сообщений другим программам, но не вашей, то лучше пользоваться Yield().


Вопрос: Как мне вывести какое-нибудь окошко с картинкой, пока программа грузится?

Ответ: Смотрите пример в X:\DELPHI\DEMOS\DB\MASTAPP\mastapp.dpr.

Удобно использовать функцию ShowSplashWindow из rxLib.


Вопрос: Как мне запустить какую-нибудь программу? А как подождать, пока эта программа не отработает? Как выяснить, работает ли программа или уже завершилась? Как принудительно закрыть выполняющуюся программу?

Ответ: WinExec() или ShellExecute. У второй больше возможностей.

(AY, VB): CreateProcess().

(SO): CreateProcess() в параметре process info возвращает handle запущенного процесса. Вот и делаешь WaitForSingleObject(pi.hProcess, INFINITE);

(AA): Win16: Delay можно взять из rxLib.


Вопрос: Как мне работать с файлами MS Word или таблицами Excel?

Ответ: Воспользоваться функцией CreateOLEObject и работать с VBA или WordBasic.

NB: Обратите внимание на то, как устанавливаются именованные параметры у процедур WordBasic'а, например, FileOpen(Name := 'myname.doc');

Пример проверен только на Word 7.0 (рус) !!! Вот, может поможет...

unit InWord;
interface
uses
... ComCtrls; // Delphi3
... OLEAuto; // Delphi2
[skip]
procedure TPrintForm.MPrintClick(Sender: TObject);
var W: Variant;
S: String;
begin
S:=VarToStr(Table1['Num']); //В D3 без промежуточной записи
// в var у меня не пошло :(
try // А вдруг где ошибка :)
W:=CreateOleObject('Word.Basic');
// Создаем документ по шаблону MyWordDot
// с указанием пути если он не в папке шаблонов Word
W.FileNew(Template:='C:\MyPath\DB\MyWordDot',NewTemplate:=0);
// Отключение фоновой печати (на LJ5L без этого был пустой лист)
W.ToolsOptionsPrint(Background:=0);

// Переходим к закладке Word'a 'Num'
W.EditGoto('Num'); W.Insert(S);
//Сохранение
W.FileSaveAs('C:\MayPath\Reports\MyReport')
W.FilePrint(NumCopies:='2'); // Печать 2-х копий
finally
W.ToolsOptionsPrint(Background:=1);
W:=UnAssigned;
end;
end;
.....


Вопрос: Как сделать так, чтобы запущенная программа не была видна на панели задач?

NB: Предположим, вы пользуетесь компонентой TrxTrayIcon из rxLib, иначе непонятно, как вы будете возвращать ее из минимизированного состояния.

Ответ: (EM, DS):

type
TForm1 = class(TForm)
Label1: TLabel;
RxTrayIcon1: TRxTrayIcon;
procedure FormCreate(Sender : TObject);
procedure RxTrayIcon1DblClick(Sender: TObject);
private
{ Private declarations }
procedure ApplicationMinimize(Sender : TObject);
procedure ApplicationRestore(Sender : TObject);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMinimize := ApplicationMinimize;
Application.OnRestore := ApplicationRestore;
ShowWindow(Application.Handle, SW_HIDE);
end;

procedure TForm1.ApplicationMinimize(Sender : TObject);
begin
ShowWindow(Application.Handle, SW_HIDE);
end;

procedure TForm1.ApplicationRestore(Sender : TObject);
begin
ShowWindow(Application.Handle, SW_HIDE);
end;

procedure TForm1.RxTrayIcon1DblClick(Sender: TObject);
begin
Application.Restore;
Application.BringToFront;
end;

(AK): Только сpазу пpедупpеждаю пpо гpабли, на котоpые я наступал:
Будь готов к тому, что если пpи попытке закpытия пpиложения в OnCloseQuery или OnClose выводится вопpос о подтвеpждении, то могут быть пpоблемы с автоматическим завеpшением пpогpаммы пpи shutdown - под Win95 пpосто зависает, под WinNT не завеpшается. Очевидно, что сообщение выводится, но его не видно (пpичем SW_RESTORE не сpабатывает). Решение - ловить WM_QueryEndSession и после всяких завеpшающих действий и вызова CallTerminateProcs выдавать Halt.


Вопрос: А как поместить свою иконку на taskbar, там где часы и переключатель клавиатуры?

Ответ: В библиотеке rxLib есть компонент TrxTrayIcon.


Вопрос: Как сделать так, чтобы в моей форме курсор перемещался по полям ввода по Enter, как по Tab?

Ответ: (SV):

Если вы хотите обрабатывать событие на уровне формы (а не в каждом отдельном компоненте), уберите обработчики события у всех компонент и создайте FormKeyPress -- обработчик OnKeyPress для формы:

procedure Form1.OnKeyPress(Sender : TObject; var Key : char);
begin
if Key = #13 then begin
SelectNext(Sender as TWinControl, true, true);
Key := #0;
end;
end;

(AnSa): Давно хотелось высказаться по поводy этого способа. Во-пеpвых, нyжно выставлять y фоpмы KeyPreview = True. Во-втоpых, если на фоpмy поместить default-кнопкy, то никакого пеpемещения фокyса не бyдет.


Вопрос: А где взять нормальный хелп для Delphi 3? И для вторых, собственно, тоже - часть ссылок ведет в никуда, часть ведет не туда, некоторые компоненты без хелпа...

Ответ: Hадо поставить нормальные Delphi 3, а не Confidentional/Field beta.

Для Delphi 2 -- или найдите где-нибудь обновленные файлы .HLP, например, на
www.borland.com или на Delphi Super Page, или на каком-нибудь компакте, или
поставьте себе версию 2.01. Моя имеет истинную версию (Help|About...,
наберите Alt-VERSION) 2.0.76.0. Узнать ее можно также по странице Internet в
панели компонентов.


Вопрос: Посоветуйте что-нибудь для работы с модемом и/или COM-портом из Delphi.

Ответ: AsyncPro. Он покроет 95% ваших нужд.


Вопрос: Как сделать так, чтобы программу можно было запустить только в одном экземпляре?

Ответ: Воспользуйтесь функцией ActivatePrevInstance из библиотеки rxLib. Для
завершения второго экземпляра, попытавшегося запуститься, используйте
Application.Terminate;

(AS): Другой вариант: X:\DELPHI2\DEMOS\IPCDEMOS\ipcthrd.pas, функция
IsMonitorRunning().

(EK): CreateSemaphore(nil,0,1,'MySemaphoreName');


Прочие существующие F.A.Q. по Delphi:

Эхи по Delphi

Эхи
Краткое описание
RU.DELPHI общие вопросы программирования на Delphi, не связанные с базами данных
RU.DELPHI.INFO эта эха - только для чтения. Писать в нее разрешено немногим и, скорее всего, это не вы.... Туда помещаются F.A.Q. и списки интернетовских и фидошных ресурсов Delphi
RU.DELPHI.DB вопросы программирования баз данных в среде Delphi
RU.DELPHI.UUE категорически не рекомендованная к получению эха - для публикации файлов лучше пользоваться файлэхами.

Файлэхи по Delphi

Файлэха
Краткое описание
WDEVDELPHI официальная файлэха иерархии RU.DELPHI
FEDELAPP Delphi and DBMS related applications, utilities and other goodies
FEDELINF Delphi related technical information, documentation
FEDELSRC Delphi related both 16 and 32bit Components and Libraries Sources
FEDELGEN Delphi related General
FED32SRC Delphi related 32bit Sources
FED32GEN Delphi related 32bit General

Дружественные эхи

Эхи
Краткое описание
RU.CBUILDER Borland C++Builder
SU.WINDOWS.PROG общие вопросы программирования под MS Windows
SU.WIN32.PROG вопросы программирования для Win32 API
SU.WIN95.PROG вопросы программирования под MS Windows 95
SU.DBMS базы данных
SU.DBMS.SQL SQL-базы данных
SU.DBMS.BORLAND базы данных фирмы Borland
SU.DBMS.INTERBASE "родная" для Delphi база данных
SU.SOFTW общие вопросы разработки программ
RU.ALGORITHMS вещи, не зависящие от фамилии президента IBM и текущего номера сервиспака к NT
SU.FLAME обсуждение превосходства Borland Delphi над всеми прочими средствами разработки

Вопрос: Что такое Bold?

Ответ: Bold является модельно-управляемой платформой для разработки архитектуры приложений, для разработки инфраструктуры приложения, управляемой схемой приложения.
С технической стороны это n-уровневая структура, включающая встроенную среду разработки.


Вопрос: Кто нуждается в Bold?

Ответ: Каждый, кто хочет использовать UML, кто хочет получить качественное приложение "как задумано", кто нуждается в быстрой разработке надёжных профессиональных приложений.


Вопрос: Что обеспечивает n-уровневое средство Bold?

Ответ: n-уровневое средство структурирует приложение в несколько уровней. В 2-х уровневом приложении (например, приложение со стандартными компонентами Delphi или C++Builder для работы с БД) GUI-компоненты связываются непосредственно с таблицами БД.
В n-уровневом приложении есть уровень бизнес-объектов, содержащий бизнес-правила.


Вопрос: Какие инструментальные средства моделирования поддерживаются Bold for Delphi?

Ответ: Bold for Delphi/ Bold for C++ поддерживает двунаправленную интеграцию с Rational Rose (Rose 98 и выше). Поддержка других инструментальных средств, таких, например, как ObjectDomain, доступна по требованию. Остальные средства моделирования поддерживаются через обмен метаданными XMI и XML формата.


Вопрос: Генерирует ли код Bold for Delphi?

Ответ: Нет. Bold for Delphi/Bold for C++ является модельно-поддерживающей платформой, которая тесно интегрирована в Delphi/C++Builder, используя стандартную компонентную модель Delphi (VCL).
Bold for Delphi/Bold for C++ генерирует код для бизнес-классов. Код, первоначально содержавший элементы для добавления методов и бизнес-правил, генерируется в бизнес-объекты.


Вопрос: Как Bold for Delphi сохраняет информацию о модели?

Ответ: Информация модели хранится в приложении в компоненте BoldModel. Кроме того, Bold for Delphi/Bold for C++ позволяет сохранять модель в файле. В дальнейшем планируется включить поддержку хранилища объектов.


Вопрос: Может ли Bold for Delphi автоматически создавать БД?

Ответ: Да, Bold for Delphi/Bold for C++ обеспечивает автоматическую генерацию таблиц, а также изменение структуры с сохранением данных тогда, когда это требуется (что обычно случается при развитии модели!).


Вопрос: Доступен ли Bold из других систем разработки, кроме Delphi?

Ответ: Bold for Delphi включает в себя Bold for C++, предназначенный для Borland C++Builder.


Вопрос: Какие базы данных поддерживаются Bold for Delphi?

Ответ: Bold for Delphi поддерживает все SQL-БД, доступ к которым осуществляется через Borland Database Engine, ADO или драйверы InterBase. Через Borland SQL Links BDE так же возможен доступ к Oracle, Sybase, Informix, MS SQL Server, DB2 и InterBase.


За дополнительной информацией обращайтесь в компанию Interface Ltd.

Обсудить на форуме Borland

Рекомендовать страницу

INTERFACE Ltd.
Телефон/Факс: +7 (495) 925-0049
Отправить E-Mail
http://www.interface.ru
Rambler's Top100
По техническим вопросам обращайтесь к вебмастеру