Entwickler-Ecke
Internet / Netzwerk - problem mit receivebuf/sendbuf und record
Hendi48 - Mi 18.07.07 13:27
Titel: problem mit receivebuf/sendbuf und record
Hi,
ich habe einen Updater der der die neueste version und eine notice zu einem Client übermittelt. Leider klappt das mit dem notice senden nicht so es kommt immer: nil kann nicht zu TRicheditStrings zugewiesen werden.
mein code (ausschnitte):
Server:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| type TestRecord = record lines: TStrings; end;
TForm2 = class(TForm) [...]
procedure TForm2.ServerSocket1ClientWrite(Sender: TObject; Socket: TCustomWinSocket); var buffer: TestRecord; begin
with Buffer do begin lines := richedit1.lines; end;
Socket.SendBuf(Buffer, SizeOf(Buffer)); Socket.Sendtext(Edit1.text); end; |
Client:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| type TestRecord = record lines: Tstrings; end;
[...]
procedure TForm2.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); var aktuell: boolean; getbuffer: TestRecord; begin aktuell:=false; label5.Caption:=Socket.ReceiveText; Application.ProcessMessages; aktuell:=label4.caption=label5.caption; if not aktuell then begin showmessage('OMG new version!'); end; if aktuell then begin showmessage('You are using the latest version.'); end;
Socket.ReceiveBuf(GetBuffer, SizeOf(GetBuffer));
with GetBuffer do begin RichEdit1.Lines:=lines; end;
end; |
Edit:
Wenn ich
Delphi-Quelltext
1: 2: 3: 4:
| with GetBuffer do begin lines.SaveToFile('lol.txt'); end; |
mach kommt ne access violation also kann es sein das der gar nix empfängt?
Narses - Mi 18.07.07 14:55
Titel: Re: problem mit receivebuf/sendbuf und record
Moin!
Hendi48 hat folgendes geschrieben: |
Delphi-Quelltext 1: 2: 3: 4:
| type TestRecord = record lines: TStrings; end; | |
Fehler-Klassiker, kuckst du in die
FAQ [
http://www.delphi-library.de/topic_Probleme+beim+SendenEmpfangen+von+records++dyn+Objekten_60793.html]. :mahn: :les: ;)
Hendi48 hat folgendes geschrieben: |
Delphi-Quelltext 1: 2: 3:
| with Buffer do begin lines := richedit1.lines; end; | |
Das ist komplett falsch, du kannst Objekte nicht durch Zuweisung der Zeiger kopieren, dazu gibt es
.Assign()! :mahn: :idea:
cu
Narses
Hendi48 - Mi 18.07.07 15:08
hm also is ein record schlecht dafür geeignet..wie soll ich es denn sonst machen? Den text in eine .txt speichern lassen und dann zum client senden?
Hendi48 - Mi 18.07.07 20:28
hm das is mir zu kompliziert, ich lass es einfach von meiner homepage runterladen.
Trotzdem danke für die Hilfe!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!