Einzelnen Beitrag anzeigen

RedShakal
(Gast)

n/a Beiträge
 
#1

Connection Closed Gracefully.

  Alt 21. Dez 2009, 01:00
Hallo, wie ein paar von euch wissen hab ich ja einen kleinen Server geschrieben der auf einen Linux Debian Vserver laufen soll. Da ich zu doof bin den Server für Linux zu kompilen, habe ich ihn bis jetzt immer mit Wine Emuliert. Das klappte bis jetzt auch sehr gut. Heute habe ich allerdings ein Logfile eingebaut und seitdem klappt er nichtmehr richtig. Okok er klappt garnicht mehr. Sobald jemand connected wird die Verbindung abgebrochen.

Ich poste einen Teil des Sourcecodes:

Delphi-Quellcode:
AssignFile(f, 'log\'+DateToStr(Date)+'.txt');
   if FileExists('log\'+DateToStr(Date)+'.txt') then
     begin
       Append(f)
     end
   else
     begin
       Rewrite(f);
     end;

Genau an der Rewrite stelle bleibt er stehen.


- Ich habe bereits versucht den Datein die Chmod rechte zu geben.
- Ich habe bereits allen Datein und Ordnern testweise 777 gegeben.
- ich habe versucht statt log\ einfach mal log/ zu machen
- ich habe versucht die Datei manuell zu erstellen. Er springt trozdem zu Rewrite
- Ich habe versucht das ganze als Root im Home verzeichnis auszuführen

Was kann ich noch tun?


P.S. Unter Windows läuft der Server übrigens Problemlos.


Edit: Auch wenn sich die Log Datein im gleichen Verzeichnis befinden wie der Server befinden, klappt es nicht.
"AssignFile(f, DateToStr(Date)+'.txt');"


Edit: Ich glaub ich hab den Fehler gefunden. Ich habe eine Debug Nachicht eingebaut die mir statt 21.12.09 folgendes ausgegeben hat:

"File log\12/21/2009.txt existiert nicht"


Edit:

So ich hab das Problem jetzt gelöst.

Delphi-Quellcode:
procedure TServer.IdTCPServer1Execute(AThread: TIdContext);
var
   f : TextFile;
   Files : string;
   myDate : TDateTime;
   myYear, myMonth, myDay : Word;
begin
  myDate := Date;
  DecodeDate(myDate, myYear, myMonth, myDay);

   Files := ('log\'+IntToStr(myDay)+'-'+IntToStr(myMonth)+'-'+IntToStr(myYear)+'.txt');
   AssignFile(f, Files);
   if FileExists(Files) then
     begin
       Append(f)
     end
   else
     begin
       Rewrite(f);
     end;
Begründung:

Unter Windows gibt Date "21.12.09" aus. Unter Linux jedoch "12/21/2009". Dies führt zu komplikationen bei den Pfadangaben und damit zum Fehler.
Lösung: mit DecodeDate das Datum in die Einzelteile aufteilen und anschließend selbst zusammensetzen. Ich habe als Trennzeichen "-" benutzt.
Damit erhalte ich Datumsangaben im format "21-12-09".
  Mit Zitat antworten Zitat