![]() |
AW: TCP-Server als Web-Server (Datein senden)
Das ist jetzt aber nicht dein ernst oder? Warum postest du den gesamten Quelltext anstelle nur den Teil bei dem der Fehler auftritt?
|
AW: TCP-Server als Web-Server (Datein senden)
^^
Hier der Fehler:
Delphi-Quellcode:
idlog.Items.Add(Format( 'Befehl %s %s empfangen von %s:%d',
[RequestInfo.Command, RequestInfo.Document, TIdIOHandlerSocket(AThread.Connection.IOHandler).Binding.PeerIP, TIdIOHandlerSocket(AThread.Connection.IOHandler).Binding.PeerPort])); |
AW: TCP-Server als Web-Server (Datein senden)
:glaskugel:
|
AW: TCP-Server als Web-Server (Datein senden)
Hi,
interessant wäre auch in welchem Event Du diese Zeilen benutzt, dann kann man die :glaskugel: auch wieder in den Schrank packen ;-) Ich vermute jetzt mal das bei Deinem :
Delphi-Quellcode:
Ein Breakpoint und debuggen sollten den Fehler recht schnell ausfindig machen,
idlog.Items.Add(Format( 'Befehl %s %s empfangen von %s:%d',
[RequestInfo.Command, RequestInfo.Document, // RequestInfo = Nil ? TIdIOHandlerSocket(AThread.Connection.IOHandler).Binding.PeerIP, // Binding = Nil ? TIdIOHandlerSocket(AThread.Connection.IOHandler).Binding.PeerPort])); // Binding = Nil ? der genaue Wortlaut der Fehlermeldung könnte übrings den ein oder anderen dazu veranlassen Dir die Ursache+Lösung zu verraten ;-) Greetz Data |
AW: TCP-Server als Web-Server (Datein senden)
Hi,
hatte jetzt gerade nochmal Deinen "gesamten" Source überflogen und geschaut, wo genau den die besagte Zeile im Code steht. Und siehe da, ich lag mit meiner Vermutung "gold richtig!, RequestInfo zeigt ins Nirvana !!! Warum ?!
Delphi-Quellcode:
^^ Damit sollte Dein Problem gelöst sein ^^
procedure TForm1.HTTPServerCommandGet(AThread: TIdPeerThread;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo); procedure AuthFailed; var ResponseInfo: TIdHTTPResponseInfo; begin ResponseInfo.ContentText := '<html><head><title>Fehler</title></head><body><h1>Fehler</h1>Sie haben keine Befugnis dieses Dokument zu sehen-</body></html>'; ResponseInfo.ResponseNo := 403; end; procedure AccessDenied; var RequestInfo: TIdHTTPRequestInfo; ResponseInfo: TIdHTTPResponseInfo; begin ResponseInfo.ContentText := '<html><head><title>Error</title></head><body><h1>Access denied</h1>'#13 + 'Sie sind nicht befugt, die Seite zu öffnen.</body></html>'; ResponseInfo.ResponseNo := 403; end; var LocalDoc: string; ByteSent: Cardinal; ResultFile: TFileStream; RequestInfo: TIdHTTPRequestInfo; ResponseInfo: TIdHTTPResponseInfo; begin // hier fehlt eine Zuweisung der Parameter an Deine Lokalen Variablen RequestInfo := ARequestInfo; ResponseInfo := AResponseInfo; // ---- jetzt sollte die folgende Zeile gehen idlog.Items.Add(Format( 'Befehl %s %s empfangen von %s:%d', [RequestInfo.Command, RequestInfo.Document, TIdIOHandlerSocket(AThread.Connection.IOHandler).Binding.PeerIP, TIdIOHandlerSocket(AThread.Connection.IOHandler).Binding.PeerPort])); // .... Rest ist nicht mehr relevant Allerdings hätte Dich schon die Compiler-Meldung: [Warnung] Unit1.pas(220): Variable 'ResponseInfo' ist möglicherweise nicht initialisiert worden [Warnung] Unit1.pas(229): Variable 'ResponseInfo' ist möglicherweise nicht initialisiert worden [Warnung] Unit1.pas(245): Variable 'RequestInfo' ist möglicherweise nicht initialisiert worden [Warnung] Unit1.pas(254): Variable 'ResponseInfo' ist möglicherweise nicht initialisiert worden darauf aufmerksam gemacht haben müssen. Was mich aber noch viel mehr beschäftigt ist die Frage warum Du überhaupt extra Variablen für "ResponseInfo" und "RequestInfo" verwendet hast, diese bekommst Du doch wunderbar als Funktions-/Procedure Parameter mitgeliefert.
Delphi-Quellcode:
Du hast jetzt in einer Procedure an 3 Stellen RequestInfo und ResponseInfo deklariert ....
procedure TForm1.HTTPServerCommandGet(AThread: TIdPeerThread;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo); Das geht gar nicht :wink: Einfach komplett mit "ARequestInfo" und "AResponseInfo" arbeiten und die ganzen lokalen Varianten rausschmeissen. Greetz Data |
AW: TCP-Server als Web-Server (Datein senden)
Danke, ,,früher" hatte ich das noch nicht so gewusst... ^^
Habe hier nicht mehr reingeschaut. Das hatte ich dann auch gemerkt. Trotzdem Danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:22 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