Thema: Delphi Für Linux compilen

Einzelnen Beitrag anzeigen

RedShakal
(Gast)

n/a Beiträge
 
#14

Re: Für Linux compilen

  Alt 19. Dez 2009, 17:41
Also mein Quellcode sieht aktuell so aus:

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

uses
 SysUtils, windows, IdTCPServer, IdContext, IdBaseComponent, IdComponent, ComCtrls;
type
 TServer = class(TObject)
   IdTCPServer1: TIdTCPServer;
   procedure IdTCPServer1Execute(AThread: TIdContext);
   procedure IdTCPServer1Connect(AThread: TIdContext);
 private
   { Private declarations }
   constructor Create;
 public
   { Public declarations }
 end;

 Const
   Version = '0.02';

type
  TDynStringArray = Array of string;

function Explode(const Separator, S :String; Limit :Integer = 0): TDynStringArray;
  var
    SepLen: Integer;
    F, P: PChar;
begin
  SetLength(Result, 0);
  if (S = '') or (Limit < 0) then
    Exit;
  if Separator = 'then
    begin
      SetLength(Result, 1);
      Result[0] := S;
      Exit;
    end;
  SepLen := Length(Separator);

  P := PChar(S);
  while P^ <> #0 do
    begin
      F := P;
      P := AnsiStrPos(P, PChar(Separator));
      if (P = nil) or ((Limit > 0) and (Length(Result) = Limit - 1)) then
        P := StrEnd(F);
      SetLength(Result, Length(Result) + 1);
      SetString(Result[High(Result)], F, P - F);
      F := P;
      if P = Separator then
        SetLength(Result, Length(Result) + 1);
      while (P^ <> #0) and (P - F < SepLen) do
        Inc(P);
    end;
end;


procedure TServer.IdTCPServer1Execute(AThread: TIdContext);
var
  Data : String;
  StrArr : TDynStringArray;
  LI :TListItem;
begin
 with AThread.Connection do
 begin
   Data := String(Socket.ReadLn);
   Data := Trim(Data);
   WriteLn(Data);

   if Length(Data) > 0 then
     begin
       StrArr := Explode('|', Data);
         if StrArr[0] = 'loginthen
            begin
              if StrArr[3] <> Version then
                begin
                  Socket.WriteLn('version');
                end
              else
                begin
                  if (StrArr[1] = 'test') and (StrArr[2] = '123') then
                    begin
                      Socket.WriteLn('login');
                    end
                else
                  begin
                    Socket.WriteLn('invalid');
                  end;
              end;
            end;
     end;
 end;
end;

procedure TServer.IdTCPServer1Connect(AThread: TIdContext);
begin
  WriteLn('Client verbunden.');
end;

constructor TServer.Create;
begin
 inherited Create;
 WriteLn('#######################');
 WriteLn('## ##');
 WriteLn('## Masterserver '+version+' ##');
 WriteLn('## ##');
 WriteLn('#######################');
 WriteLn('');
 IdTCPServer1 := TIdTCPServer.Create(nil);
 WriteLn('Server wurde initialisiert.');
 IdTCPServer1.DefaultPort := 5000;
 WriteLn('Server lauscht auf Port: '+InttoStr(IdTCPServer1.DefaultPort));
 IdTCPServer1.TerminateWaitTime := 5000;
 IdTCPServer1.OnConnect := IdTCPServer1Connect;
 IdTCPServer1.OnExecute := IdTCPServer1Execute;
end;

var
 Server : TServer;
begin
 Server := TServer.Create;
 Server.IdTCPServer1.Active := True;
 While True do sleep(10);
end.
Ich hab ihn jetzt mal versucht über ein Linux VMWare mit FPC zu compilen aber irgentwie bin ich anscheiennd zu doof dazu. Wenn ich mit wine emulieren will dann sagt er irgentwas von X-Servern und Grafiktreibern.

An der Stelle wo jetzt if (StrArr[1] = 'test') and (StrArr[2] = '123') then steht versuche ich noch herauszufinden wie ich eine SQL Datenbank benutzen kann was sich leider als weit schwieriger erweißt als erwartet.
  Mit Zitat antworten Zitat