Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Mal wieder nen Dynamisches Array[eledigt] (https://www.delphipraxis.net/77818-mal-wieder-nen-dynamisches-array%5Beledigt%5D.html)

tr909 25. Sep 2006 11:26


Mal wieder nen Dynamisches Array[eledigt]
 
So, folgendes. Ich will eine Datei Parsen. Dafür lese ich sie in ein FileStream ein und will bestimmte Abschnitte nacheinander "rauskopieren". endMail und startMail geben jeweils die Position an, an der der entsprechende Teil beginnt bzw. endet.
Delphi-Quellcode:
var
 Buff : ARRAY of char;
 endMail, startMail : IntegerM
 tbbFile : TFileStream;

begin
...
Setlength (Buff,endMail-startMail+1)
tbbFile.ReadBuffer(Buff,endMail-startMail);
Beim Lesen in den Buffer tritt nun eine allgemeine Schutzverletzung auf. Benutze ich statt dessen jedoch ein statisches Array funktioniert alles wunderbar.

Ich krieg noch die Kriese.

Gruß
tr909

Der_Unwissende 25. Sep 2006 11:31

Re: Mal wieder nen Dynamisches Array
 
Hi,
da ist noch etwas durcheinander in deinem Code. Am einfachsten führst du erstmal eine Variable ein, in der du die Länge zwischenspeicherst. Hier musst du sonst an mind. zwei Stellen die Berechnung ändern und das ist ganz schlecht.
Zudem sind dynamische Arrays nur Zeiger auf ein reserviertes Stück speicher, du musst also den Index überben um das korrekte Element zu bekommen:

Delphi-Quellcode:
var
 Buff : Array of char;
 endMail, startMail : Integer;
begin
...

setLength (Buff, endMail - startMail + 1);
// length gibt die Länge des Arrays zurück
tbbFile.ReadBuffer(Buff[0], length(Buff));

Gruß De Unwissende

tr909 25. Sep 2006 11:39

Re: Mal wieder nen Dynamisches Array
 
:wall: natürlich (die gehen mir so auf den "Zeiger". Irgendwann lern ich´s noch)

Besten Dank
tr909


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