Delphi: відмінності між версіями

[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
JAnDbot (обговорення | внесок)
Немає опису редагування
Рядок 1:
'''Delphi''' - [[мова програмування]], що ґрунтується на діалекті мови [[Pascal]] від компанії [[Borland]]. До версії 7.0 мала назву Object Pascal. Окрім того Delphi - середовище розробки ([[IDE]]) для однойменної мови. Ця плутанина часто викликає непорозуміння. По суті, Delphi є об'єктно-орієнтованим розширенням мови [[Pascal]].
 
 
 
== Операційні системи, для яких використовується Delphi ==
Рядок 12 ⟶ 14:
 
== Історія ==
 
* Delphi 1 — 1995 рік.
 
* Delphi 2 — 1996 рік. Додано покращену інтеграцію з базами даних, підтримку технології [[OLE]], засоби візуального наслідування форм
 
* Delphi 3 — 1997 рік. Окрім підтримки настільних БД, програміст отримує можливість простої роботи з клієнт-серверними [[СКБД]].
 
* Delphi 4 — 1998 рік. Підтримка технологій [[DCOM]], [[MTS]], [[CORBA]], [[MIDAS]]. Підтримка перегрузки функцій (директива overload).
 
* Delphi 5 — 1999 рік. Підтримка інтернет-технологій. Реалізація інтерфейсів (як альтернативи множинного наслідування).
 
* Delphi 6 — 2000 рік. Спроба реалізації кросплатформеності.
 
* Delphi 7 — 2001 рік.
 
* Delphi 8 — 2004 рік.
 
* Delphi 2005 — 2005 рік.
 
* Delphi 2006 — 2006 рік.
 
* Delphi 2007 — 2007 рік.
 
 
== Приклади ==
 
Клас, що реалізує певний інтерфейс.
 
<source lang="pascal">
type
TICGLog = class(TInterfacedObject, ICGLog)
private
FFileName: string;
FPlacement: TLogPlacement;
FFileHandle: THandle;
FAutoFlush: boolean;
protected
procedure SetFileName(const Value: string);
procedure SetPlacement(const Value: TLogPlacement);
procedure SetAutoFlush(const Value: boolean);
 
function GetFileName: string;
function GetPlacement: TLogPlacement;
function GetAutoFlush: boolean;
 
public
constructor Create;
destructor Destroy; override;
procedure AddMessage(MessageType: TLogMessageType; MessageText: string);
property FileName: string read GetFileName write SetFileName;
property Placement: TLogPlacement read GetPlacement write SetPlacement;
property AutoFlush: boolean read GetAutoFlush write SetAutoFlush;
end;
 
{ TICGLog }
 
procedure TICGLog.AddMessage(MessageType: TLogMessageType;
MessageText: string);
var
LogMessage: string;
begin
if FFileHandle = INVALID_HANDLE_VALUE then
begin
FFileHandle := CreateFile(PChar(FFileName), GENERIC_WRITE, FILE_SHARE_READ, nil,
OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
if FFileHandle = INVALID_HANDLE_VALUE then
raise Exception.Create(GetLastWinError());
end;
case MessageType of
lmtError: LogMessage := '[ERROR]';
lmtWarning: LogMessage := '[WARNING]';
lmtHint: LogMessage := '[HINT]';
lmtInformation: LogMessage := '[INFO]';
lmtRAW: LogMessage := MessageText;
end;
if MessageType <> lmtRAW then
begin
LogMessage := LogMessage + ' [' + FormatDateTime('dd.mm.yyyy hh:nn:ss.zzz', Now()) + ']';
LogMessage := LogMessage + ' ' + MessageText + #13#10;
end;
SetFilePointer(FFileHandle, 0, nil, FILE_END);
FileWrite(FFileHandle, PChar(LogMessage)^, Length(LogMessage));
if FAutoFlush then
begin
CloseHandle(FFileHandle);
FFileHandle := INVALID_HANDLE_VALUE;
end;
end;
 
</source>
 
{{comp-lang-stub}}