![]() |
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 |
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. |
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 :(
|
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? |
Re: Fehlermeldung...
Wie Luckie schon sagte: Ein bisschen Code wäre nicht schlecht ... :wink:
Man liest sich, Stanlay :hi: |
Re: Fehlermeldung...
okok war einfach zu faul sorrrry! ;)
Delphi-Quellcode:
so das wärs... hoffentlich kann mir jemand helfen :)
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; |
Re: Fehlermeldung...
wie ist TClient definiert? Müsste nicht Speicher reserviert bzw das Objekt erstellt werden?
|
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 |
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.
|
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. |
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