Main > Technology > Computers > Programming > Delphi > Delphi Code snippets
Converting strings to and from Pchars:
Use"StrPCopy" to convert a string into a pchar.
function StrPCopy(Dest: PChar;
const Source: string): PChar;
Use "StrPas" to convert a pchar into a string.
function StrPas(Str: PChar): string;
Kevin Solway (173)
|
|
Main > Technology > Computers > Programming > Delphi > Delphi Code snippets
Some one-liners:
Display last system error message:
ShowMessage(SysErrorMessage(GetLastError()));
Convert a number to currency:
FloatToStrF(Value, ffCurrency, 15, CurrencyDecimals); // "15" is the precision, where "Value" is a "Double"
File name of application:
ExtractFileName(Application.ExeName);
Path of application:
ExtractFilePath(Application.ExeName);
Let other applications use the CPU when you're in a loop:
Application.ProcessMessages;
Kevin Solway (173)
|
|
Main > Technology > Computers > Programming > Delphi > Delphi Code snippets
Running on Vista?
function IsWindowsVista: Boolean;
var VerInfo: TOSVersioninfo;
begin
VerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
GetVersionEx(VerInfo);
Result := VerInfo.dwMajorVersion >= 6;
end;
Kevin Solway (173)
|
|
Main > Technology > Computers > Programming > Delphi > Delphi Code snippets
2 ways to do 'if and, then':
if (SentenceAge >= '18') then
if (SentenceAge <= '20') then
Result := IntToStr(TrQi4) + ' - ' + IntToStr(TrB);
if (SentenceAge >= '18') and (SentenceAge <= '20') then
Result := IntToStr(TrQi4) + ' - ' + IntToStr(TrB);
kellyjones00 (593)
|
|
Main > Technology > Computers > Programming > Delphi > Delphi Code snippets
Horizontal scrollbar for listbox
listbox.Perform(LB_SETHORIZONTALEXTENT, 900, 0);
thesource (378)
|
|
Main > Technology > Computers > Programming > Delphi > Delphi Code snippets
Array of byte to string, and string to array of byte:
// string to array
StrPLCopy(pansichar(@arr), str, sizeof(arr));
// array to str
procedure AnsiStringFromBuf(var S: AnsiString; Buffer: PAnsiChar; Len: Integer);
// Usage: ansistringfrombuf(str, pansichar(@arr), sizeof(arr));
begin
setstring(s, buffer, len);
setlength(s, strlen(buffer));
end;
thesource (378)
|
|
Main > Technology > Computers > Programming > Delphi > Delphi Code snippets
Detect when system is shutting down:
private
procedure EndSessionMsg(var Msg : TMessage); message WM_QUERYENDSESSION;
procedure TForm1.EndSessionMsg(var Msg : TMessage);
begin
if backingupinprocess then Msg.Result := 0; // prevent system from shutting down or logging off
Msg.result := 0;
if Msg.lparam = 0 then
begin
ShowMessage('System is shutting down');
end
else if (DWORD(Msg.lparam) and ENDSESSION_LOGOFF) = ENDSESSION_LOGOFF then
begin
ShowMessage('User is logging off');
end;
end; // EndSessionMsg
thesource (378)
|
|
Main > Technology > Computers > Programming > Delphi > Delphi Code snippets
Focus a combobox:
Normally, you can focus a component by using its "setfocus" method. However, a combobox requires the use of a different method.
procedure TForm1.focuscombobox(combobox : tcombobox);
var editHWnd : HWND;
begin
editHWnd := FindWindowEx(Combobox.handle, 0, nil, nil); // get the handle of the edit component
if editHWnd <> 0 then windows.setfocus(editHWnd);
end;
thesource (378)
|
|
Main > Technology > Computers > Programming > Delphi > Delphi Code snippets
Reading old versions of unpacked records:
Different versions of delphi use a different number of bytes to align record fields. Using the following compiler directive may help in reading records that were used with older compilers.
{$A4} // Set alignment to 4 bytes, for reading old format (Delphi 4) unpacked records
As a rule, when creating the declarations for records, you should specify the use of packed records. For example:
TPackedRecord = Packed Record
. . .
end;
This future-proofs the record in the case that future versions of Delphi use a different number of bytes for field alignment.
There may be some cost in performance, depending on the number and size of records, since unpacked records can be accessed faster.
thesource (378)
|
|