AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tfilestream.write(buffer,30)

Ein Thema von der_boss · begonnen am 1. Jun 2005 · letzter Beitrag vom 1. Jun 2005
Antwort Antwort
Seite 1 von 2  1 2      
der_boss

Registriert seit: 10. Sep 2004
Ort: Dresden
27 Beiträge
 
Delphi 6 Professional
 
#1

Tfilestream.write(buffer,30)

  Alt 1. Jun 2005, 12:35
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:
    for i:=0 to length(outstream)-1 do begin
      ausdat.Write(outstream[i],2);
    end;
// mit outstream : array of word ; länge 30

nicht funktionieren tut:

ausdat.Write(outstream,30) Also, wer ne Idee hat, ich bin dankbar im voraus!!

Der_Boss

[edit=Luckie]Delphi-Tags Mfg, Luckie[/edit]
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#2

Re: Tfilestream.write(buffer,30)

  Alt 1. Jun 2005, 12:38
was willst denn in den stream schreiben? nen string? nen integer?

strings schreibst so innen stream rein

Delphi-Quellcode:
stream.write(length(deinstring), 4); // 4 = sizeof(integer)
stream.write(pointer(deinstring)^, length(deinstring));
od.
stream.write(deinstring[1], length(deinstring));
zahlen schreibst so innnen stream

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]
  Mit Zitat antworten Zitat
Thebe

Registriert seit: 26. Jul 2004
Ort: Wedel
78 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Tfilestream.write(buffer,30)

  Alt 1. Jun 2005, 12:42
Zitat:
nicht funktionieren tut:

ausdat.Write(outstream,30)


Also, wer ne Idee hat, ich bin dankbar im voraus!!
Probier

ausdat.Write(outstream[0], Length(outstream) * sizeOf(word));
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#4

Re: Tfilestream.write(buffer,30)

  Alt 1. Jun 2005, 12:42
machmer das lesen gleich noch mit, bevord fragst

Delphi-Quellcode:
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;
records fungsionieren in der regel genauso wie primitive daten die'd lesen/schreiben willst, solang keine pointer oder strings drin vorkommen

also

Delphi-Quellcode:
type
  TRecord = record
    iZahl: integer;
    iBuchstabe: char;
    dMadde: double;
  end;

var
  xRecord: TRecord;
dann kannst

Stream.Write(xRecord, SizeOf(xRecord)); oder lesen...
Stream.Read(xRecord, SizeOf(xRecord)); SizeOf(xRecord) wäre in dem fall hier 13, da sizeof(iZahl) = 4 + sizeof(iBuchstabe) = 1 + sizeof(dMadde) = 8 = 13 :) [edit=Luckie]Delphi-Tags Mfg, Luckie[/edit]
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#5

Re: Tfilestream.write(buffer,30)

  Alt 1. Jun 2005, 12:44
ich sollte vorher vllt die frage richtig lesen ^^
  Mit Zitat antworten Zitat
MosiXXL
(Gast)

n/a Beiträge
 
#6

Re: Tfilestream.write(buffer,30)

  Alt 1. Jun 2005, 12:55
so gehts:

ausdat.Write(outstream[0],30) //Wenn das array auch eine Länge von 30 hat
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#7

Re: Tfilestream.write(buffer,30)

  Alt 1. Jun 2005, 12:59
Zitat:
so gehts:

ausdat.Write(outstream[0],30) //Wenn das array auch eine Länge von 30 hat
aber auch nur wenn die elemente im array die speichergröße von einem byte haben, also byte, char, boolean, oder 'n enum
  Mit Zitat antworten Zitat
Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Tfilestream.write(buffer,30)

  Alt 1. Jun 2005, 14:15
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
"Look at you, Hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?"
SwapIt Highscore:
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#9

Re: Tfilestream.write(buffer,30)

  Alt 1. Jun 2005, 14:25
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
  Mit Zitat antworten Zitat
Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 
#10

Re: Tfilestream.write(buffer,30)

  Alt 1. Jun 2005, 15:03
Zitat von barf00s:
ausdat[0] ist das erste element von ausdat
Ist schon klar frage ist ob da vorher noch ein paar bytes vom Array belegt sind dann wäre Ausdat nämlich der Pointer zum Header und der kann den Inhalt beim auslesen verfälschen

Zitat von barf00s:
... 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
und ein guter Hex-Editor bastelt das auch gleich wieder um in Plaintext naja bei Integer / Cardinal etc werten eigentlich nich aber bei char gehts ganz gut...

Greetz
Boombuler
"Look at you, Hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?"
SwapIt Highscore:
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz