AGB  ·  Datenschutz  ·  Impressum  







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

Connection Closed Gracefully.

Ein Thema von RedShakal · begonnen am 21. Dez 2009 · letzter Beitrag vom 21. Dez 2009
 
RedShakal
(Gast)

n/a Beiträge
 
#1

Connection Closed Gracefully.

  Alt 21. Dez 2009, 00: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
 


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 09:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz