Entwickler-Ecke
Internet / Netzwerk - Streams und strings vereinen?
Niels_ - Fr 21.10.05 21:46
Titel: Streams und strings vereinen?
Hallo, habe folgendes: habe eine Datei in einen TfileStream geladen, nun möchte ich noch einen string (den Dateinamen+länge des Namens - länge ist nicht das problem^^) am Anfang hinzufügen. Also simpel gesagt:
Delphi-Quelltext
1: 2:
| st:=Tfilestream.create('c:\test.dat',fmOpenRead); st:='TEST.dat(8)'+st; |
möchte das dann über das Netzwerk laufen lassen. Habe keine passenden tutorials o.ä. gefunden, wäre also über jede Hilfe dankbar.
Niels_ - Sa 22.10.05 20:17
hmm - habe das versucht, aber irgendwie kriege ich immer fehler..
hier mein "Prog":
(der sender)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread); var FStream: TFileStream; begin FStream := TFileStream.Create('C:\test.abc', fmOpenRead); try SaveStrToStream(Fstream,'test.abc'); AThread.Connection.OpenWriteBuffer; AThread.Connection.WriteStream(FStream); AThread.Connection.CloseWriteBuffer; finally AThread.Connection.Disconnect; FStream.Free; end; end; |
(der empfang)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.Button2Click(Sender: TObject); var FStream: TFileStream; s:string; begin FStream := TFileStream.Create('C:\temp.abc', fmCreate); with Form1 do begin IdTCPClient1.Connect; try IdTCPClient1.ReadStream(FStream, -1, True); FStream.Seek(0, soFromBeginning); finally IdTCPClient1.Disconnect; FStream.Free; end; Loadstrfromstream(Fstream,s); showmessage(s); end; |
kurze erklärung:
wie man sehen kann, möchte ich gerne im stream angeben, wie die datei heißt, diese dann übers netzwerk verschicken und dort dann erst mal temporär abspeichern um dann richtig umzubenennen und dann unter dem richtigen Namen abspeichern.
alzaimar - Sa 22.10.05 20:24
Du öffnest einen String zum Lesen (fmOpenRead) und schreibst dann DA etwas rein, wenn Du ihn mit fmOpenReadWrite geöffnet hättest, würdest Du den String in die Datei schreiben.
Was kann denn AThread.Connection noch ausser WriteStream, etwa auch WriteString?
Lannes - Sa 22.10.05 20:26
Hallo,
wenn ich das richtig sehe gibst Du in Deinem zweiten Code den Stream zu früh frei,
Delphi-Quelltext
1: 2: 3:
| FStream.Free; end; Loadstrfromstream(Fstream,s); |
Niels_ - Sa 22.10.05 22:17
Danke erstmal, hat soweit alles gepasst
oh man - ich muss gestehen, dass ich mit streams so meine probleme hab.
Wie kann ich denn jetzt vom letzten Stream (nachdem ich die stringvariable gelesen hab) diese nicht nur auslesen, sondern auch vom stream wieder löschen? muss ich dafür einen 2. anlegen und alles hinter dem string herauskopieren? bitte mit source... ;)
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!