![]() |
Tfilestream.write(buffer,30)
Liebe Mitkämpfer,
ich möchte TFileStream.Write(Buffer,30) verwenden, was aber nicht geht, weil er Grütze reinschreibt. Was mache ich falsch? Funktionieren Tut:
Delphi-Quellcode:
// mit outstream : array of word ; länge 30
for i:=0 to length(outstream)-1 do begin
ausdat.Write(outstream[i],2); end; nicht funktionieren tut:
Delphi-Quellcode:
Also, wer ne Idee hat, ich bin dankbar im voraus!!
ausdat.Write(outstream,30)
Der_Boss [edit=Luckie]Delphi-Tags Mfg, Luckie[/edit] |
Re: Tfilestream.write(buffer,30)
was willst denn in den stream schreiben? nen string? nen integer?
strings schreibst so innen stream rein
Delphi-Quellcode:
od.
stream.write(length(deinstring), 4); // 4 = sizeof(integer)
stream.write(pointer(deinstring)^, length(deinstring));
Delphi-Quellcode:
stream.write(deinstring[1], length(deinstring));
zahlen schreibst so innnen stream
Delphi-Quellcode:
stream.write(zahl, sizeof(zahl)); // wenn deine zahl nen integer iss, dann is sizeof = 4, beinem double isses schon 8, also die speichergröße der variable :)
öhm ja.. [edit=Luckie]Delphi-Tags Mfg, Luckie[/edit] |
Re: Tfilestream.write(buffer,30)
Zitat:
ausdat.Write(outstream[0], Length(outstream) * sizeOf(word)); |
Re: Tfilestream.write(buffer,30)
machmer das lesen gleich noch mit, bevord fragst :)
Delphi-Quellcode:
records fungsionieren in der regel genauso wie primitive daten die'd lesen/schreiben willst, solang keine pointer oder strings drin vorkommen
procedure ReadStringFromStream(Stream: TStream; var sText: string);
var sText: string; iLength: integer; begin Stream.Read(iLength, 4); SetLength(sText, iLength); Stream.Read(Pointer(sText)^, iLength); // oder wieder Stream.Read(sText[1], iLength); end; also
Delphi-Quellcode:
dann kannst
type
TRecord = record iZahl: integer; iBuchstabe: char; dMadde: double; end; var xRecord: TRecord;
Delphi-Quellcode:
oder lesen...
Stream.Write(xRecord, SizeOf(xRecord));
Delphi-Quellcode:
Stream.Read(xRecord, SizeOf(xRecord));
Delphi-Quellcode:
[edit=Luckie]Delphi-Tags Mfg, Luckie[/edit]
SizeOf(xRecord) wäre in dem fall hier 13, da sizeof(iZahl) = 4 + sizeof(iBuchstabe) = 1 + sizeof(dMadde) = 8 = 13 :)
|
Re: Tfilestream.write(buffer,30)
ich sollte vorher vllt die frage richtig lesen ^^
|
Re: Tfilestream.write(buffer,30)
so gehts:
ausdat.Write(outstream[0],30) //Wenn das array auch eine Länge von 30 hat |
Re: Tfilestream.write(buffer,30)
Zitat:
|
Re: Tfilestream.write(buffer,30)
Kann es evtl sein das "outstream[0]" eine andere Ardresse hat als "outstream" an sich?
brauch sich ja nur um ein Byte verschieben und schon steht nur noch Mist in "ausdat"... Greetz Boombuler |
Re: Tfilestream.write(buffer,30)
ausdat[0] ist das erste element von ausdat
... das nur "mist" in der dateisteht und kein plain text ist klar, da das array in binärer form gespeichert wird und nicht in textform :) |
Re: Tfilestream.write(buffer,30)
Zitat:
Zitat:
Greetz Boombuler |
Re: Tfilestream.write(buffer,30)
lawl -.-°
was hat das jetz wieder mit hexeditoren zu tun? |
Re: Tfilestream.write(buffer,30)
Damit kann man wenigstens erreaten was der Datenmüll soll :)
Ne es wird ja nich bitweise sondern byteweise geschrieben und wenn man nich weiß was in der Datei drin steht nimmt man eben n Hex-Editor :) Greetz Boombuler PS: Langsam wirds OT |
Re: Tfilestream.write(buffer,30)
wer hat was von bitweise gesagt?
-.-° |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:26 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