Nur scheitert er schon an diesen Code-Schnipsel.
Code: Alles auswählen
uses
{$IFDEF Linux}
x, xlib;
{$ENDIF}
{$IFDEF Windows}
Windows;
{$ENDIF}
Einer eine Idee, wie man dies umgehen kann ?
Oder ist Delph6 einfach zu alt ?
Code: Alles auswählen
uses
{$IFDEF Linux}
x, xlib;
{$ENDIF}
{$IFDEF Windows}
Windows;
{$ENDIF}
Mit dem gehts, aber jetzt steht ich weiter an. Solches wie int16, int32, etc. wird auch nicht erkannt. Auch mit 64bit Zeugs hat er Probleme, welches Lazarus mit win32 kompiliert.Vielleicht MSWINDOWS?
Code: Alles auswählen
{ $DEFINE DOS}
{ $DEFINE LINUX}
{ $DEFINE LINUX_32}
{ $DEFINE LINUX_64}
{ $DEFINE WIN_3264}
{ $DEFINE WIN_32}
{ $DEFINE WIN_64}
{ $DEFINE BIT_16}
{$DEFINE BIT_32}
{ $DEFINE BIT_64}
{$DEFINE AUSGEBEN_SCHALTER}
procedure os_system;
begin
Writeln('system: ' + {$IFNDEF DOS} 'NICHT ' + {$ENDIF} 'DOS');
Writeln('system: ' + {$IFNDEF LINUX} 'NICHT ' + {$ENDIF} 'LINUX');
Writeln('system: ' + {$IFNDEF WINDOWS} 'NICHT ' + {$ENDIF} 'WINDOWS');
Writeln('system: ' + {$IFNDEF CPU16} 'NICHT ' + {$ENDIF} 'CPU16');
Writeln('system: ' + {$IFNDEF CPU32} 'NICHT ' + {$ENDIF} 'CPU32');
Writeln('system: ' + {$IFNDEF CPU64} 'NICHT ' + {$ENDIF} 'CPU64');
Writeln('system: ' + {$IFNDEF CPUI8086} 'NICHT ' + {$ENDIF} 'CPUI8086');
Writeln('system: ' + {$IFNDEF CPUI386} 'NICHT ' + {$ENDIF} 'CPUI386');
Writeln('system: ' + {$IFNDEF CPU386} 'NICHT ' + {$ENDIF} 'CPU386');
Writeln('system: ' + {$IFNDEF X86_64} 'NICHT ' + {$ENDIF} 'X86_64');
Writeln('system: ' + {$IFNDEF CPUX86_64} 'NICHT ' + {$ENDIF} 'CPUX86_64');
Writeln('system: ' + {$IFNDEF CPUX64} 'NICHT ' + {$ENDIF} 'CPUX64');
Writeln('system: ' + {$IFNDEF CPUAMD64} 'NICHT ' + {$ENDIF} 'CPUAMD64');
end;
procedure os_pruefen;
begin
{$IFDEF CPU32}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne 32bit wegen CPU32'); {$ENDIF}
{$DEFINE BIT_32} {$UNDEF BIT_16} {$UNDEF BIT_64}
{$ENDIF}
{$IFDEF CPU64}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne 64bit wegen CPU64'); {$ENDIF}
{$DEFINE BIT_64} {$UNDEF BIT_16} {$UNDEF BIT_32}
{$ENDIF}
{$IFDEF CPU16}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne 16bit wegen CPU16'); {$ENDIF}
{$DEFINE BIT_16} {$UNDEF BIT_32} {$UNDEF BIT_64}
{$ENDIF}
{$IFDEF CPU386}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne 32bit wegen CPU386'); {$ENDIF}
{$DEFINE BIT_32} {$UNDEF BIT_16} {$UNDEF BIT_64}
{$ENDIF}
{$IFDEF CPUI386}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne 32bit wegen CPUI386'); {$ENDIF}
{$DEFINE BIT_32} {$UNDEF BIT_16} {$UNDEF BIT_64}
{$ENDIF}
{$IFDEF X86_64}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne 64bit wegen X86_64'); {$ENDIF}
{$DEFINE BIT_64} {$UNDEF BIT_16} {$UNDEF BIT_32}
{$ENDIF}
{$IFDEF CPUX64}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne 64bit wegen CPUX64'); {$ENDIF}
{$DEFINE BIT_64} {$UNDEF BIT_16} {$UNDEF BIT_32}
{$ENDIF}
{$IFDEF CPUAMD64}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne 64bit wegen CPUAMD64'); {$ENDIF}
{$DEFINE BIT_64} {$UNDEF BIT_16} {$UNDEF BIT_32}
{$ENDIF}
{$IFDEF CPUI8086}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne 16bit wegen CPUI8086'); {$ENDIF}
{$DEFINE BIT_16} {$UNDEF BIT_32} {$UNDEF BIT_64}
{$ENDIF}
{$IFDEF WIN_32}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne 32bit wegen WIN_32'); {$ENDIF}
{$DEFINE BIT_32} {$UNDEF BIT_16} {$UNDEF BIT_64}
{$ENDIF}
{$IFDEF WIN_64}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne 64bit wegen WIN_64'); {$ENDIF}
{$DEFINE BIT_64} {$UNDEF BIT_16} {$UNDEF BIT_32}
{$ENDIF}
{$IFDEF LINUX_32}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne 32bit wegen LINUX_32'); {$ENDIF}
{$DEFINE BIT_32} {$UNDEF BIT_16} {$UNDEF BIT_64}
{$ENDIF}
{$IFDEF LINUX_64}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne 64bit wegen LINUX_64'); {$ENDIF}
{$DEFINE BIT_64} {$UNDEF BIT_16} {$UNDEF BIT_32}
{$ENDIF}
{$IFDEF DOS}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne 16bit'); {$ENDIF}
{$DEFINE BIT_16} {$UNDEF BIT_32} {$UNDEF BIT_64}
{$ENDIF}
{$IFNDEF DOS} {$IFNDEF LINUX}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne NICHT DOS UND NICHT LINUX, also: WINDOWS'); {$ENDIF}
{$DEFINE WINDOWS} {$DEFINE WIN_3264} {$UNDEF LINUX_32} {$UNDEF LINUX_64}
{$ENDIF} {$ENDIF}
{$IFDEF WINDOWS}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne WINDOWS, also: KEIN LINUX und KEIN DOS'); {$ENDIF}
{$DEFINE WIN_3264} {$UNDEF LINUX} {$UNDEF LINUX_32} {$UNDEF LINUX_64} {$UNDEF DOS}
{$ENDIF}
{$IFDEF WIN_3264}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne WIN_3264, also: KEIN LINUX und KEIN DOS'); {$ENDIF}
{$DEFINE WINDOWS} {$UNDEF LINUX} {$UNDEF LINUX_32} {$UNDEF LINUX_64} {$UNDEF DOS}
{$ENDIF}
{$IFDEF LINUX}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne LINUX, also: KEIN WINDOWS und KEIN DOS'); {$ENDIF}
{$UNDEF WINDOWS} {$UNDEF WIN_3264} {$UNDEF WIN_32} {$UNDEF WIN_64} {$UNDEF DOS}
{$ENDIF}
{$IFDEF DOS}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne DOS, also: KEIN WINDOWS und KEIN LINUX'); {$ENDIF}
{$UNDEF WINDOWS} {$UNDEF WIN_3264} {$UNDEF WIN_32} {$UNDEF WIN_64} {$UNDEF LINUX} {$UNDEF LINUX_32} {$UNDEF LINUX_64}
{$ENDIF}
{$IFDEF WIN_3264} {$IFDEF BIT_32}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne WINDOWS UND 32bit, also: WIN_32'); {$ENDIF}
{$DEFINE WIN_32} {$UNDEF WIN_64}
{$ENDIF} {$ENDIF}
{$IFDEF WIN_3264} {$IFDEF BIT_64}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne WINDOWS UND 64bit, also: WIN_64'); {$ENDIF}
{$DEFINE WIN_64} {$UNDEF WIN_32}
{$ENDIF} {$ENDIF}
{$IFDEF LINUX} {$IFDEF BIT_32}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne LINUX UND 32bit, also: LINUX_32'); {$ENDIF}
{$DEFINE LINUX_32} {$UNDEF LINUX_64}
{$ENDIF} {$ENDIF}
{$IFDEF LINUX} {$IFDEF BIT_64}
{$IFDEF AUSGEBEN_SCHALTER} Writeln('Erkenne LINUX UND 64bit, also: LINUX_64'); {$ENDIF}
{$DEFINE LINUX_64} {$UNDEF LINUX_32}
{$ENDIF} {$ENDIF}
Writeln;
end;
procedure os_aktuell;
begin
Writeln('aktuell: ' + {$IFNDEF DOS} 'NICHT ' + {$ENDIF} 'DOS');
Writeln('aktuell: ' + {$IFNDEF LINUX} 'NICHT ' + {$ENDIF} 'LINUX');
Writeln('aktuell: ' + {$IFNDEF LINUX_32} 'NICHT ' + {$ENDIF} 'LINUX_32');
Writeln('aktuell: ' + {$IFNDEF LINUX_64} 'NICHT ' + {$ENDIF} 'LINUX_64');
Writeln('aktuell: ' + {$IFNDEF WIN_3264} 'NICHT ' + {$ENDIF} 'WIN_3264');
Writeln('aktuell: ' + {$IFNDEF WIN_32} 'NICHT ' + {$ENDIF} 'WIN_32');
Writeln('aktuell: ' + {$IFNDEF WIN_64} 'NICHT ' + {$ENDIF} 'WIN_64');
Writeln('aktuell: ' + {$IFNDEF BIT_16} 'NICHT ' + {$ENDIF} 'BIT_16');
Writeln('aktuell: ' + {$IFNDEF BIT_32} 'NICHT ' + {$ENDIF} 'BIT_32');
Writeln('aktuell: ' + {$IFNDEF BIT_64} 'NICHT ' + {$ENDIF} 'BIT_64');
end;
procedure compiler_check;
begin
os_system; writeln;
os_pruefen;
os_aktuell;
end;
Code: Alles auswählen
uses
{$IFDEF FPC} // <--- das ist für FPC/Lazarus
{$IFDEF LINUX}x, xlib{$ENDIF}
{$IFDEF MSWINDOWS}Windows{$ENDIF}
{$ELSE} // <--- das folgende für Delphi
Windows;
{$ENDIF}
Die IntN-Typen wurden erst in einer der neueren Delphi Versionen hinzugefügt, genauso wie der unsigned 64-Bit Typ UInt64 (Delphi kennt kein QWord).Mathias hat geschrieben: So 16. Feb 2025, 16:43Mit dem gehts, aber jetzt steht ich weiter an. Solches wie int16, int32, etc. wird auch nicht erkannt. Auch mit 64bit Zeugs hat er Probleme, welches Lazarus mit win32 kompiliert.Vielleicht MSWINDOWS?
Code: Alles auswählen
program Project2;
{$APPTYPE CONSOLE}
const
{$IFDEF Linux}
libSDL3 = 'SDL3';
{$ENDIF}
{$IFDEF msWindows}
libSDL3 = 'SDL3';
{$ENDIF}
{$IFDEF Darwin}
libSDL3 = 'libSDL3.dylib';
{$ENDIF}
type
TSDL_Window = record
end;
PSDL_Window = ^TSDL_Window;
const
SDL_INIT_VIDEO = $00000020;
SDL_WINDOW_RESIZABLE = $00000020;
function SDL_Init(flags: integer): integer; cdecl; external libSDL3;
function SDL_CreateWindow(title: pchar; w, h: integer; flags: integer): PSDL_Window; cdecl; external libSDL3;
function SDL_DestroyWindow(window: PSDL_Window): Pointer; cdecl; external libSDL3;
procedure SDL_Delay(ms: integer); cdecl; external libSDL3;
var
window: PSDL_Window;
begin
SDL_Init(SDL_INIT_VIDEO);
window := SDL_CreateWindow('SDL3 Window', 320, 200, SDL_WINDOW_RESIZABLE);
SDL_Delay(3000);
SDL_DestroyWindow(window);
end.
Es geht um irgendein Example von meiner Bindung. Zum schauen, ob diese Bindung auch mit Delphi läuft.Wenn du ein Beispiel-Projekt für Delphi hast, dann kann ich dir das auch mal auf einem recht aktuellen Delphi ausprobieren.