AGB  ·  Datenschutz  ·  Impressum  







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

Datei mit FileStream auslesen

Ein Thema von delphinewbie · begonnen am 27. Aug 2010 · letzter Beitrag vom 10. Sep 2010
Antwort Antwort
Seite 4 von 4   « Erste     234   
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#31

AW: Datei mit FileStream auslesen

  Alt 2. Sep 2010, 13:31
Entschuldigt,
aber wenn ich soetwas als Beschreibung von Daten in einer Datei lese, fühle ich mich doch sehr unwohl:
formula : array[1..255] of string; was verbirgt sich hinter "String"?
Handelt es sich um den "klassischen" Pascal-String Längenbyte,Nutzdaten[1]..Nutzdaten[längenbyte] oder ist es ein LängenWort(16Bit)/(32Bit), sind für jeden String 255 Bytes reserviert oder sind die Längenangaben/Strings mit oder ohne Trennzeichen hintereinander "geklatscht"??????
Unicode und 16Bit-Chars sparen wir uns einmal.

Und dann gibt es noch die Frage ob die Zahlen Leastsignifikant (Intel) gespeichert wurden, denn wenn dies nicht der Fall ist, dann kann man kein Word/Integer oder was auch immer sondern nur Bytes lesen, die dann erst einmal "richtig" sortiert werden müssen.

(Falls man das Format einer Datei nicht genau kennt, dann geht kein Weg an Filestream vorbei)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#32

AW: Datei mit FileStream auslesen

  Alt 2. Sep 2010, 13:33
In einem Record sollte/darf man nur ShortString verwenden
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#33

AW: Datei mit FileStream auslesen

  Alt 2. Sep 2010, 17:17
In einem Record sollte/darf man nur ShortString verwenden
"sollte" kann ich nur voll unterstützen,
bei "darf" hab' ich so meine Zweifel. Wenn ich mich richtig erinnere geistern hier einige Records mit AnsiStrings herum.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#34

AW: Datei mit FileStream auslesen

  Alt 2. Sep 2010, 17:25
Man kann es schon verwenden. Eine solche Struktur kann man dann aber nicht in typisierten Datein o.ä. verwenden
Markus Kinzler
  Mit Zitat antworten Zitat
delphinewbie

Registriert seit: 27. Aug 2010
47 Beiträge
 
#35

Problem gelöst

  Alt 10. Sep 2010, 11:57
Hi,
nach unendlich vielen Versuchen bin ich nun zu einer Lösung meines Problems gekommen. Auch wenn ich nicht ganz nachvollziehen kann, wo letztendlich der Unterschied dieser beiden Varianten besteht, bin ich nun erstmal erleichtert, dass der Fehler beim Programm beenden nicht mehr auftritt. Vielleicht kann mir von euch jemand erklären, wo hier der feine Unterschied liegt.
Also: meine ursprüngliche Variante
Delphi-Quellcode:
Read(ds.size_ext_ch_header[i],sizeof(longint));
Setlength(ds.ext_ch_header[i], ds.size_ext_ch_header[i]);
Read(ds.ext_ch_header[i],ds.size_ext_ch_header[i]);
habe ich nun verändert in
Delphi-Quellcode:
Read(ds.size_ext_ch_header[i],sizeof(longint));
for k:=1 to ds.size_ext_ch_header[i] do
     Read(ds.ext_ch_header[i],1);
Es wird nun also byteweise ausgelesen, und zwar so oft, wie es in ds.size_ext_ch_header[i] drin steht. Und es funktioniert
Da ich den Inhalt dieser Bytes nicht weiter benötige, kann ich also diese auch immer wieder überschreiben.
Kann ich eigentlich in so einem Fall auch einfach 100 Byte oder so viel Bytes, wie in ds.size_ext_ch_header[i] steht, weiter springen, um so bspw. 'uninteressante' Daten zu überspringen ? Dann könnte ich mir ja diese for-Schleife sparen...

Vielen Dank für Eure Tipps
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#36

AW: Datei mit FileStream auslesen

  Alt 10. Sep 2010, 12:10
Du kannst Daten, die du nicht braucht ganz einfach so überspringen:
Position := Position + 100; // aktuelle Position im Stream um 100 Bytes nach "hinten" verschieben.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#37

AW: Datei mit FileStream auslesen

  Alt 10. Sep 2010, 12:25
Position := Position + 100;
Oder man nehme .Seek
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
delphinewbie

Registriert seit: 27. Aug 2010
47 Beiträge
 
#38

AW: Datei mit FileStream auslesen

  Alt 10. Sep 2010, 12:28
Sooooo einfach kann es sein !!!
Hat geklappt,
Danke
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


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:06 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