Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit SetLength (https://www.delphipraxis.net/33414-problem-mit-setlength.html)

Airblader 6. Nov 2004 16:03


Problem mit SetLength
 
Hi.
Mal was ganz banales (für mich und einen Freund).

Folgendes:
Ich hab 2 Arrays in die ich Daten einlese.
Zwischen die Daten muss nun etwas neues kommen.
Dazu muss ich ja das Array um 1 verlängern.

Delphi-Quellcode:
old_n: array [0..9] of string;
old_p: array [0..9] of string;

[...]

SetLength(old_n, Length(old_n)+1);
SetLength(old_p, Length(old_p)+1);
Allerdings bekomme ich für beide Zeilen:

Zitat:

Inkompatible Typen
Kann mich einer aufklären? Entweder ist es so kompliziert (eher nicht) oder ich hab Tomaten auf den Augen :gruebel:

Sharky 6. Nov 2004 16:06

Re: Problem mit SetLength
 
Hai Airblader,
ein Array mit fester Größe kannst Du nicht verändern. Schau dir mal die Delphi-Referenz durchsuchenDynamischen Array an.

Matze 6. Nov 2004 16:06

Re: Problem mit SetLength
 
Du musst diese array dynamisch deklarieren sprich:

Delphi-Quellcode:
old_n: array of string;
old_p: array of string;
Dann zu beginn die Anfangslänge mit Delphi-Referenz durchsuchenSetLength festlegen, diese lässt sich auch später ohne weiteres verändern.

Nikolas 6. Nov 2004 16:06

Re: Problem mit SetLength
 
Es sind die Tomaten:
Mit
Delphi-Quellcode:
old_n: array [0..9] of string;
nimmst du dir ein statisches Array. Dessen Länge kannsrt du nicht mehr verändern.
Per
Delphi-Quellcode:
old_n: array of string
kannst du dir ein dynamsches nehmen, dessen Länge du dann verändern kannst. Bevor du das erste Mal da was reinschreibst, musst du aber mindestens einmal das setlength aufgerufen haben, denn sonst schreibst du ins Nirgendwo und bekommst eine AV.

Chewie 6. Nov 2004 16:06

Re: Problem mit SetLength
 
SetLength funktioniert nur bei dynamischen Arrays, nicht bei statischen (du hast ein statisches deklariert). Dynamisch Arrays haben bei der Deklaration keine Bereichsangabe.

alcaeus 6. Nov 2004 16:07

Re: Problem mit SetLength
 
Hi Airblader,

du kannst nur dynamische Arrays vergrößern oder verkleinern.
Du musst also old_n und old_p als array of string deklarieren, und im OnCreate folgendes schreiben:
Delphi-Quellcode:
SetLength(old_n, 10);
SetLength(old_p, 10);
damit haben die arrays wieder eine Länge von 10 Elementen, und das vergrößern wird auch klappen.

Greetz
alcaeus

[add]:shock: das ich langsam bin wusste ich, aber SO langsam :roll: ;)[/add]

Airblader 6. Nov 2004 16:07

Re: Problem mit SetLength
 
Für eine Antwort hau ich 10 mal den Kopf gegen Wand, bei den 4 Antworten wird es 40 mal

Danke :)

Ich hau nun erstmal die Wand klein und dann änder ich das

ibp 6. Nov 2004 16:08

Re: Problem mit SetLength
 
cool 4 antworten zur gleichen zeit!

DP-Maintenance 6. Nov 2004 16:12

DP-Maintenance
 
Dieses Thema wurde von "Sharky" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Ist zwar beantwortet. Ich schiebe es trotzdem ma in die richtige Sparte ;-)


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