Mes programmes OpenSource
Pour une offre professionnelle, consultez mon site
http://www.execute.re.
Kylix - Sources Borland Kylix (Linux)
Kylix 1 DirectX MD2 MD2T KCyber OpenGL DCal3D
MD2 MD2 Viewer
Première application
Avant de recevoir la beta 4, je travaillais sur un afficheur de modèles Quake2 (fichiers .MD2) avec mon
bon vieux Delphi 2 (projet compatible Delphi 5)...alors mon choix a été rapide, essayons de compiler ça sous Kylix.
Ben ça marche pas, mais je le savais d'avance, ne serais ce que parce que les unités de la CLX sont préfixées d'un '
Q' :)
Le compilateur étant toujours aussi rapide (vive le Pascal), en un rien de temps (et en lançant un projet vierge pour comparaison)
il me faut quelques minutes pour ajuster les
USES
.
uses
{$ifdef win32} // Delphi Units
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ShellAPI,StdCtrls, ExtCtrls,
{$else} // Kylix Units
SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs,
QExtCtrls,
{$endif}
MD2MAP, Scenes;
|
Suppression du code Windows (qui n'est pas vital dans cet exemple)
{$ifdef win32}
// Windows specific Drag&Drop !
procedure WMDropFiles(Var Msg:TMessage); message WM_DROPFILES;
{$endif}
|
Retour à l'équivalent VCL pour le code spécifique Windows vital !
{$ifdef win32}
hFile:=CreateFile(PChar(fName),GENERIC_READ,FILE_SHARE_READ,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if hFile=INVALID_HANDLE_VALUE then raise Exception.Create('Unable to open file '+fName);
hMap :=CreateFileMapping(hFile,nil,PAGE_READONLY,0,0,nil);
if hMap=0 then raise exception.Create('Unable to Map file '+fName);
hPtr:=MapViewOfFile(hMap,FILE_MAP_READ,0,0,0);
if hPtr=nil then raise exception.Create('Unable to view file '+fName);
{$else}
Stream:=TMemoryStream.Create;
Stream.LoadFromFile(AFileName);
hPtr:=Stream.Memory;
{$endif}
|
Derniers petits ajustements
{$ifdef win32}
{$R *.DFM}
{$else}
{$R *.xfm} // Kylix use "xfm" files where Delphi use "DFM" files
{$endif}
|
{$ifdef win32}
{$R *.RES} // Delphi isn't case Sensitive
{$else}
{$R *.res} // Kylix IS case Sensitive !
{$endif}
|
Dernier petit détail, hors IDE, l'application retourne une erreur
error in loading shared libraries: libqtintf.so: cannot open shared object file: No such file or directory
;
il sagit de l'équivalent d'une DLL windows qui n'est pas dans le "PATH"...en regardant le script
startkylix j'en ai
déduit le script suivant :
#!/bin/bash
echo "Starting MD2..."
LD_LIBRARY_PATH="/root/kylix/bin:$LD_LIBRARY_PATH"
export LD_LIBRARYPATH
./MD2
|
REM Equivalent DOS
echo "Starting MD2..."
PATH = c:\delphi\bin;%PATH%
MD2.EXE
|
Finallement voilà ce que ça donne :
MD2.ZIP (sources Delphi/Kylix)
Version Windows 98
|
Version Mandrake 7.0
|