![]() |
AddressViolation bei Socket.SendBuf
Hey,
Ich hab folgendes problem. Ich habe ein "chat program" von einem TUT-gemacht und da steht das hier drin bei ServerSocket.OnClientConnect
Delphi-Quellcode:
Geht auch, aber wenn ich da selber etwas senden will per ButtonClick dann gehts aufeinmal nicht, hier der code:
procedure TFrmServer.ServerSocketClientConnect (Sender: TObject; Socket: TCustomWinSocket);
var Nachricht: TChatNachricht; var I: Integer; begin MemStatus.Lines.Add ('Status: Neuer Client verbunden'); Nachricht.NickName := 'Server'; Nachricht.Text := 'test'; Socket.SendBuf (Nachricht, SizeOf(Nachricht)); with ServerSocket.Socket do begin Nachricht.Nickname := 'Server'; Nachricht.Text := 'Jetzt ' + IntToStr(ActiveConnections) + ' Teilnehmer'; for I := 0 to ActiveConnections-2 do Connections[I].SendBuf (Nachricht, SizeOf(Nachricht)) end; {with} end;
Delphi-Quellcode:
Wieso geht es oben und hier nicht?
procedure TFrmServer.Button1Click(Sender: TObject);
var Nachricht: TChatNachricht; haha: TCustomWinSocket; begin Nachricht.NickName := 'Server'; Nachricht.Text := 'haha'; haha.SendBuf(Nachricht, SizeOf(Nachricht)); end; |
Re: AddressViolation bei Socket.SendBuf
Wie sieht die Deklaration von TChatNachricht aus?
|
Re: AddressViolation bei Socket.SendBuf
das ist doch
Delphi-Quellcode:
Oder?
Nachricht.NickName := 'Server';
Nachricht.Text := 'haha'; {EDIT] Au man bin ich doof. Hier:
Delphi-Quellcode:
[/EDIT]
type TChatNachricht = Record
Nickname: string[255]; Text: string[255] end; |
Re: AddressViolation bei Socket.SendBuf
Weil vielleicht "haha" nirgends initialisiert ist. Du kannst doch nicht einfach von irgendwo eine Variable nehmen nur weil sie vom selben Typ ist.
Edit: Im ersten Teil bekommst du über die Parameter einen Zeiger namens "Socket", der tatsächlich auf ein WinSocket zeigt. Im zweiten Quelltext legst du einfach einen Zeiger lokal an, der mal auf ein WinSocket zeigen könnte. Aber du hast ihm ja nirgends einen Wert zugewiesen. Der zeigt einfach zufällig irgendwohin. Die Wahrscheinlichkeit, dass er auf dein WinSocket zeigt liegt bei ca. 1 : 4 Mrd . |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:13 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