AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Für Linux compilen

Ein Thema von RedShakal · begonnen am 18. Dez 2009 · letzter Beitrag vom 19. Dez 2009
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#11

Re: Für Linux compilen

  Alt 19. Dez 2009, 10:51
Wieso benutzt du Wine?
Du kannst das Programm doch einfach nativ für Linux compilieren.
Dann brauchst du Wine gar nicht mehr.
Marvin
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#12

Re: Für Linux compilen

  Alt 19. Dez 2009, 10:57
Zitat von implementation:
Du kannst das Programm doch einfach nativ für Linux compilieren.
Dann erklär ihm doch mal etwas detaillierter wie er das mit FPC macht
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#13

Re: Für Linux compilen

  Alt 19. Dez 2009, 11:20
Wenn er eine Konsolenanwendung haben will muss er einfach nur die IDE öffnen,
de´n Quelltext laden und eventuell noch den Quelltext so umschreiben, dass er nichts Windows-spezifisches benutzt.
Dann auf das Menü "Run" klicken und je nach Wunsch auf den Menüpunkt "Compile" oder "Run".
Marvin
  Mit Zitat antworten Zitat
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
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#15

Re: Für Linux compilen

  Alt 19. Dez 2009, 17:57
Wo liegt denn das Problem beim FPC? Fehlermeldung?
Welche Version verwendest du? Welches Linux?
Bei ist die FreePascal-IDE /usr/bin/fp
und der Kommandozeilencompiler /usr/bin/fpc
Ich habe Version 2.2.4 auf Debian (lenny)
Marvin
  Mit Zitat antworten Zitat
RedShakal
(Gast)

n/a Beiträge
 
#16

Re: Für Linux compilen

  Alt 19. Dez 2009, 18:05
Project1.dpr(14,4) Warning: Constructor should be public
Project1.dpr(41,8) Error: Illegal type conversion: "ShortString" to "^Char"
Project1.dpr(45,26) Error: Illegal type conversion: "ShortString" to "^Char"
Project1.dpr(114,47) Error: Wrong number of parameters specified for call to "IdTCPServer1Connect"
Project1.dpr(95,19) Hint: Found declaration: TServer.IdTCPServer1Connect(TIdContext);
Project1.dpr(115,47) Error: Wrong number of parameters specified for call to "IdTCPServer1Execute"
Project1.dpr(59,19) Hint: Found declaration: TServer.IdTCPServer1Execute(TIdContext);
Project1.dpr(125) Fatal: There were 4 errors compiling module, stopping
  Mit Zitat antworten Zitat
Astat

Registriert seit: 2. Dez 2009
Ort: München
320 Beiträge
 
Lazarus
 
#17

Re: Für Linux compilen

  Alt 19. Dez 2009, 18:19
Hallo RedShakal, siehe folgenden Thread.

http://www.delphipraxis.net/internal...t.php?t=132581

lg. Astat
Lanthan Astat
06810110811210410503210511511603209711003210010110 9032084097103
03211611111604403209711003210010110903210010510103 2108101116122
11610103209010110510810103206711110010103210511003 2068101108112
10410503210310111509910411410510109810111003211910 5114100046
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#18

Re: Für Linux compilen

  Alt 19. Dez 2009, 18:32
Zwei der Meldungen kannst du evtl. lösen, indem du folgende Direktive benutzt:
{$mode delphi}
Marvin
  Mit Zitat antworten Zitat
Benutzerbild von argonix
argonix

Registriert seit: 28. Feb 2007
257 Beiträge
 
Delphi 2005 Personal
 
#19

Re: Für Linux compilen

  Alt 19. Dez 2009, 18:40
Unter FPC werden events durch Adressen verknüpft. Also z.B.
Delphi-Quellcode:
IdTCPServer1.OnConnect := @IdTCPServer1Connect;
IdTCPServer1.OnExecute := @IdTCPServer1Execute;
Außerdem musst du die Indy-Komponenten für Lazarus kompilieren und installieren.
(Bei dem einfachen Programm würde ich das aber mit Synapse oder LNet neu schreiben, das ist wesentlich stressfreier und vor allem schneller.)
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#20

Re: Für Linux compilen

  Alt 19. Dez 2009, 18:57
Mit genannter Direktive läuft auch das:
IdTCPServer1.OnConnect := IdTCPServer1Connect;
Marvin
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz