Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Stream auslesen (https://www.delphipraxis.net/175586-stream-auslesen.html)

oehl 2. Jul 2013 16:25

Stream auslesen
 
hallo,

ich möchte einen stream in zwei verschiedene listen einlesen und zwar so, dass die ungeraden Zeilenindex in Liste 1 und die geraden in Liste 2 stehen. Ich dachte so ungefähr

Delphi-Quellcode:
TDatensatz = packed record
        Liste1:Extended;
        Liste2:extended;

        end;
    TDatenarray = array of TDatensatz ;
var
time:smallint;
arr:TDatenarray;
index:byte;
werte:string;

begin
Stream1  := TFileStream.Create(Inputfile,fmOpenRead);
while stream1.Position < stream1.size do begin
            stream1.ReadBuffer(time, SizeOf(time));
arr[index].Liste1 = time;
stream.seek(2, soFromCurrent);
arr[index].Liste2 = time;
werte:=floattostr(arr[index].Liste1) + #9 + floattostr(arr[index].Liste2);
stream2.writebuffer(werte[1],length(werte);
inc(index);
end;
end;
das klappt aber nicht, ich hab auch wenig Erfahrung damit. Hat da jemand nen Tip?

MrMooed 2. Jul 2013 16:54

AW: Stream auslesen
 
hey,

erstmal Willkommen in der DP :thumb:

Zitat:

Zitat von oehl (Beitrag 1220447)
hallo,

ich möchte einen stream in zwei verschiedene listen einlesen und zwar so, dass die ungeraden Zeilenindex in Liste 1 und die geraden in Liste 2 stehen. Ich dachte so ungefähr

Delphi-Quellcode:
TDatensatz = packed record
        Liste1:Extended;
        Liste2:extended;

        end;
    TDatenarray = array of TDatensatz ;
var
time:smallint;
arr:TDatenarray;
index:byte;
werte:string;
[..]

Aus der Deklaration wird für mich nicht ersichtlich, was nun deine Liste (du meinst doch die Datenstruktur Liste ?) sein soll. :glaskugel:

Generell könntest du dir mal genau ansehen, wie man aus einem Stream liest: Guckstu.
Danach könnte man es so machen:
Code:
nimm eine Laufvariable, die für jeden Datensatz um eins inkrementiert wird.
Falls dann für einen Datensatz '(i mod 2) = 0' gilt (also dass es sich um eine gerade Zahl handelt)
=> füge es in Liste1 ein, andernfalls in Liste2
Zitat:

Zitat von oehl (Beitrag 1220447)
das klappt aber nicht, ich hab auch wenig Erfahrung damit. Hat da jemand nen Tip?

Was genau klappt denn nicht? Kommt irgendwann eine AV? Meckert der Compiler? Hängt er in einer Endlosschleife?


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:04 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