Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Fehlermeldung... (https://www.delphipraxis.net/13039-fehlermeldung.html)

Nightfighter 9. Dez 2003 21:41


Fehlermeldung...
 
Also folgende Fehlermeldung tritt auf: Exception der Klasse EAccessViolation ist aufgetreten. Zugriffsverletzung bei Adresse 0041.... in Modul Project1.exe . Schreiben von Adresse 000005F38.

und hab bis jetzt den fehler nach stundelangem suchen nicht gefunden.... könnt ihr mir ca. sagen was da falsch lief?
thx im voraus!!

cu NIghtFighter

Luckie 9. Dez 2003 21:46

Re: Fehlermeldung...
 
Greifst du auf ein O=bjekt zu welches nicht mehr existiert? Läuft eine Schleife über die array-Grenzen hinaus?

Zeig mal den Code, wo das apssiert, sonst können wir hier nur rumraten.

Nightfighter 10. Dez 2003 19:19

Re: Fehlermeldung...
 
hmm sorry das ich nicht mehr geschrieben hab. Also ich hab nen Server und der soll anfragen annehmen (Indy Komponente). Beim ersten Connect des Clienten ist alles ok. wenn man dann aber disconnectet und nachher wieder connectet gibts genau diesen fehler :(

nailor 10. Dez 2003 19:36

Re: Fehlermeldung...
 
das klingt nach dem, was Luckie schon gesagt hat. Zerstörst du vielleicht beim disconnect ein Object, das bei Erstellen der Form erstellt wird, aber nicht beim connecten?
Oder hast du irgend einen Zähler, der verwendet wird, und beim zweiten Durchlauf irgend ein array überschreitet?

Stanlay Hanks 10. Dez 2003 19:38

Re: Fehlermeldung...
 
Wie Luckie schon sagte: Ein bisschen Code wäre nicht schlecht ... :wink:

Man liest sich, Stanlay :hi:

Nightfighter 10. Dez 2003 19:59

Re: Fehlermeldung...
 
okok war einfach zu faul sorrrry! ;)
Delphi-Quellcode:
procedure TServer.tcpServerConnect(AThread: TIdPeerThread);
var Client:Tclient;
begin
Client.IP := Athread.Connection.Binding.PeerIP;
Client.Name := 'Connected';
Client.ListLink := Form1.Listbox1.items.Count;
Client.Thread := Athread;
Athread.Data := Client;
Clientsliste.Add(Client);
listbox.Items.Add('asdf');
Athread.Connection.WriteLn(Welcmsg);
end;

procedure TServer.tcpServerDisconnect(AThread: TIdPeerThread);
var Client:TClient;
begin
  Client := @AThread.Data;
  Memofeld.Lines.Add(Client.Name + ' hat uns verlassen');
  Clientsliste.Delete(Client.ListLink);
  Listbox.Items.Delete(Listbox.Items.IndexOf(Client.Name));
  Client.Free;
  AThread.Data := nil;
end;
so das wärs... hoffentlich kann mir jemand helfen :)

Kamil 10. Dez 2003 20:12

Re: Fehlermeldung...
 
wie ist TClient definiert? Müsste nicht Speicher reserviert bzw das Objekt erstellt werden?

SirThornberry 10. Dez 2003 20:42

Re: Fehlermeldung...
 
du kannst nicht einfach
client.free
machen.
schließlich gibst du damit einen teil des speichers frei der bei TidTCPServer.Create (oder wie das object auch immer heißt) angefordert wird. Nach dem dein onDisconnect ausgeführt ist arbeitet die klasse ja eigentlich weiter, nur geht das nicht korrekt weil du schon einen teil des speichers freigegeben hast

Kamil 10. Dez 2003 20:47

Re: Fehlermeldung...
 
@SirThornberry: Client ist doch ne lokale Variable. Sie muss in tcpServerConnect mit Client:=TClient.Create erstellt werden, damit sie in tcpServerDisconnect freigegeben werden kann.

Nightfighter 10. Dez 2003 21:35

Re: Fehlermeldung...
 
so allso um noch etwas konkreter zu werden...
ich kann zwar ne stop marke beim connect hinsetzen, aber er gibt mir schon vorher nen fehler aus, und kapier wirklich nicht warum :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz