bekomme bei dieser Codezeile die Meldung Warning unreachable code
DBlib ist als string definiert.
Code: Alles auswählen
if exe = '.exe' then DBlib:= 'sqlite3.dll' else DBlib:= 'libsqlite3.so.0';

Gruß Frank
Code: Alles auswählen
if exe = '.exe' then DBlib:= 'sqlite3.dll' else DBlib:= 'libsqlite3.so.0';
Das sieht dann bei dir so aus:dann solltest du die Library-Namen auch per ifdef festlegen.
Code: Alles auswählen
{$IFDEF windows}
DBlib:= 'sqlite3.dll';
{$ENDIF}
{$IFDEF Linux}
DBlib:= 'libsqlite3.so.0';
{$ENDIF}
So etwas zu vergleichen um das aktuelle OS rauszubekommen ist nicht wirklich schön. Mach es lieber mit $ifdef, so wie Mathias es beschrieben hat. Solltest du es an mehreren Stellen brauchen, kannst du es natürlich genauso wie bei der exe machen:DL3AD hat geschrieben:Code: Alles auswählen
if exe = '.exe' then DBlib:= 'sqlite3.dll' else DBlib:= 'libsqlite3.so.0';
Code: Alles auswählen
const
Lib = {$ifndef mswindows} 'lib' {$else} '' {$endif};
LibExt = {$ifdef mswindows}
// Windows
'.dll'
{$else}
{$ifdef darwin}
// macOS (OS X, nicht MacOS Classic)
'.dylib'
{$else}
// Alles andere (Linux, BSD, ...)
'.so.0'
{$endif}
{$endif};
begin
...
if FileExists(Lib + 'sqlite3' + LibExt) then ...
...
end;
Code: Alles auswählen
InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);