Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Readbuffer in mehrdimensionales Array (https://www.delphipraxis.net/86457-readbuffer-mehrdimensionales-array.html)

CPO 14. Feb 2007 13:34


Readbuffer in mehrdimensionales Array
 
Hallo. Ich habe folgendes problem:
Ich lese 20 Bytes aus einem Filestream in ein 2dimensionales Array ein.

Wie kann ich nun beeinflussen, dass die Bytes horizontal oder vertikal (grafisch vorgestellt)
eingelesen werden.

Bei meinen versuchen klappt nur ein vertikales Einlesen (also in eine Spalte);

Bei diesem Versuch in Zeilen einzulesen kommt nur Müll heraus:

Delphi-Quellcode:
var dummyy:integer;                      
    Incoming:TFileStream;                                  
    cbytes:longint;
begin

Incoming:=TFilestream.Create(Th_PfadDaten,fmOpenRead);                      

for dummyy:=0 to 19 do                                                  //Zeilen abarbeiten
    begin
    Incoming.Seek(XY2Pos(Th_x0,dummyy,Th_xmaxdat,Th_typedefdat),soFromBeginning);   //Zu Position im Filestream gehen
    Incoming.Readbuffer(Th_DataArray[1,dummyy],20);                  
    end;
FreeAndNil(Incoming);

f.siebler 14. Feb 2007 13:55

Re: Readbuffer in mehrdimensionales Array
 
hi,

irgendwie werde ich aus deiner fragestellung nicht ganz schlau? welche daten liegen wie vor? und welchen Sinn macht das horizontale oder vertikale einlesen der Daten?

CPO 14. Feb 2007 14:08

Re: Readbuffer in mehrdimensionales Array
 
Ich habe eine Binärdatei mit Grauwerten eines Bildes. Die Zeilen des Bildes liegen nacheinander
in der Datei.

Ich möchte nun diese Werte in ein zweidimensionales Array einlesen. Dabei soll die Urposition
jedes Pixels im Bild die gleiche im Array sein. (die Pixelinformation ist 2byte lang)

Lese ich nun z.B. die erste Zeile mit 20Bytes länge ein soll diese in der ersten Zeile meines
Arrays stehen. Dieses einlesen funktioniert bei mir leider nur Spaltenweise. Die erste Bildzeile
wird in die erste Arrayspalte eingelesen:

Incoming.Readbuffer(Th_DataArray[Th_Posy,0],20); //für Einlesen in eine Spalte

Für das Einlesen in Zeile müsste das gehen - eben leider nicht:
Incoming.Readbuffer(Th_DataArray[0,Th_Posy],20); //für Einlesen in eine Zeile

Das Array ist definiert:
TDataArray = array of array of word;
setlength(Th_DataAttay[9,9]);

DelphiKlaus 14. Feb 2007 14:26

Re: Readbuffer in mehrdimensionales Array
 
Da wirst Du wohl erst in ein eindimensionales Array einlesen und dann die Werte umspeichern müssen.

CPO 14. Feb 2007 15:48

Re: Readbuffer in mehrdimensionales Array
 
Vielen Dank für den Tip.


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