![]() |
TidUDPClient will nicht...
Hallo leute,
ich habe im Moment ein Problem mit dem UDPClient von den Indy Kompos.... hier ist mein Code :
Delphi-Quellcode:
Sobalt er die fehlerhafte Zeile erreicht hat bekomme ich Folgende Meldung :
unit RecInfoServer;
interface uses Forms, StrUtils, SysUtils, Classes, IdBaseComponent, IdComponent, IdUDPBase, IdUDPClient; type ReadInfoServer = class private idUDPClient1: TidUDPClient; public Constructor Create(ServerIP: string; ServerPort: Word); Destructor Destroy; Function GetServerName : String; Function GetServerMap : String; end; implementation //Constructor und Destructor --------------------------------------------------- Constructor ReadInfoServer.Create (ServerIP: string; ServerPort: Word); begin idUDPClient1 := TidUDPClient.Create(); // Genau hier kommt die Meldung with idUDPClient1 do begin Host := ServerIP; Port := ServerPort; end; end; Destructor ReadInfoServer.Destroy; begin idUDPClient1.Disconnect; idUDPClient1.Free; end; //GetServerName ---------------------------------------------------------------- Function ReadInfoServer.GetServerName : String; var Name : String; begin try idUDPClient1.Connect; if idUDPClient1.Connected then begin idUDPClient1.Send('˙˙˙˙TSource Engine Query'); Name := idUDPClient1.ReceiveString; end; finally result := Name; idUDPClient1.Disconnect; end; end; //GetServerMap ----------------------------------------------------------------- Function ReadInfoServer.GetServerMap : String; var Map : String; Stream1 : TMemoryStream; PacketSz: integer; RecPack : TBytes; begin try idUDPClient1.Connect; Stream1 := TMemoryStream.Create; if idUDPClient1.Connected then begin idUDPClient1.Send('˙˙˙˙TSource Engine Query'); PacketSz:=idUDPClient1.ReceiveBuffer(RecPack); end; finally Stream1.WriteBuffer(RecPack,PacketSz); end; end; end.
Code:
Ich erkenne dort kein Fehler...
Zugriffsverletzung bei Adresse 00539A56 in Modul 'Projekt1.exe'. Schreiben von Adresse 00000004
mfg |
Re: TidUDPClient will nicht...
Hallo,
was für eine Indy Version benutzt du? Bei meiner Version muss ich bei ReceiveBuffer noch einen Parameter BufferSize angeben. Was für ein Datentyp ist TBytes. Ist das vielleicht ein dynamischer Array of Byte (TByte = array of byte), dann musst du natürlich die Größe des Array initialisieren mit SetLength. Ciao Chris |
Re: TidUDPClient will nicht...
danke ersma für die antwort
Ich benutze Delphi 2009 und muss keine BufferSize festlegen... Und der fehler tritt ja auch beim TidUDPClient.Create auf und nicht bei GetServerMap... |
Re: TidUDPClient will nicht...
Hallo,
kannst Du mal das ändern:
Delphi-Quellcode:
Grüße
idUDPClient1 := TidUDPClient.Create(nil);
Klaus |
Re: TidUDPClient will nicht...
Danke Klaus, nur leider besteht der Fehler weiterhin....
PS : Ich hab die Indy 10 Komponenten |
Re: TidUDPClient will nicht...
.. nun ich habe hier kein Delphi 2009 mit entsprechenden Indys zur Verfügung.
Bei Turbo Delphi 2006 schauen die uses für Indy 10 so aus:
Delphi-Quellcode:
Ich verwende eine Ableitung von TidUDPClient.
idGlobal,idComponent,idUDPBase,idUDPClient;
Delphi-Quellcode:
Der Constructor dazu sieht so aus:
TSysLog = class(TidUDPClient)
private function formatSysLogMessage(event:TDxtEventRecord):AnsiString; public constructor Create(sysLogServerHost: AnsiString; sysLogServerPort: Integer); virtual; procedure send(event: TDxtEventRecord); function isServerAvailable:Boolean; procedure writeToBuffer(event:TDxtEventRecord;buffer:TStringList); procedure sendBuffer(buffer:TStringList); end;
Delphi-Quellcode:
Also alles in Allem ein nicht so großer Unterschied, bis auf die uses.
constructor TSysLog.create(sysLogServerHost: String; sysLogServerPort: Integer);
begin inherited create(nil); host := sysLogServerHost; port := sysLogServerPort; end; Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:49 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