![]() |
"dynamisches " Array
Hi,
ich möchte gerne eine reihe von Zahlen des Types Integer in einer Liste zusammenfassen. Also praktisch ein Array erstellen. Doch wie erstelle ich ein "dynamisches" Array? Das Array soll seine grösse Anpassen. MFG Thomas |
Schau mal in der Hilfe unter Dynamische Arrays, da ist das verständlich beschrieben.
|
Hi,
Delphi-Quellcode:
Grüsse, Daniel :hi:
type
TRec = Record //Deine Zahlen ID: Integer; TIrgendwas = Record MeinRec: Array of TRec; end; |
Wie füge ich denn jetzt einen Wert ein?
Wie ermittle ich die gesmat Anzahl aller Werte? MFG Thomas |
Du könntest dir die Hilfe zu "Dynamische Arrays" anschauen.
Im folgenden habe ich mal das wichtigste zusammengefasst: Deklarieren eines dyn. Arrays:
Delphi-Quellcode:
Anzahl der Elemente festlegen:
var MyArray: array of Integer;
Delphi-Quellcode:
Dyn. Array um x Elemente vergrößern:
SetLength(MyArray, 10); // => [0..9]
Delphi-Quellcode:
Dyn. Array kopieren:
SetLength(MyArray, Length(MyArray) + x);
Delphi-Quellcode:
Einzelne Elemente in ein neues dyn. Array kopieren:
ZweitesDynArray := Copy(MyArray);
Delphi-Quellcode:
Dyn. Array freigeben:
ZweitesDynArray := Copy(MyArray, 0, 5); // 0..4 kopieren
Delphi-Quellcode:
MyArray := nil;
|
Hi,
globale Var, Irgendwas: TIrgendwas; Irgendwas.Rec.ID := 1; Bei jedem einfügen kannst Du eine andere globale Var. hochzählen, z.B. Zähler: integer; Irgendwas.Rec.ID := 1; Inc(Zähler); Grüsse, Daniel :hi: |
Moin Thomas,
Array vergrössern: SetLength(MyDynArray,Length(MyDynArray)+1) Array verkleinern SetLength(MyDynArray,Length(MyDynArray)-1) oder SetLength(MyDynArray,high(MyDynArray)) Erster Index: low(MyDynArray) Letzter Index: high(MyDynArray) oder Length(MyDynArray)-1 |
Irgendwie kommen da keine Teiler zustande.
Dieser Cde soll die Teilermenge einer Zahl bestimmen:
Delphi-Quellcode:
MFG
type tbruch=record
zaehler:integer; nenner:integer; positiv:boolean; end; type tteiler=record zahlen:array of Integer; anzahl:integer; end; implementation {$R *.dfm} function teilermenge(zahl:integer):tteiler; var i:integer; begin result.anzahl:=0; SetLength(result.zahlen, Length(result.zahlen) + 1); result.zahlen[length(result.zahlen)-1]:=1; for i:=2 to (zahl div 2) do begin if (i mod zahl) = 0 then begin SetLength(result.zahlen, Length(result.zahlen)+1); result.zahlen[length(result.zahlen)-1]:=i; result.anzahl:=result.anzahl+1; end; end; end; procedure TForm1.Button1Click(Sender: TObject); var a:tteiler; i:integer; begin label1.Caption:=''; a:=teilermenge(strtoint(edit1.text)); for i:=0 to a.anzahl do label1.caption:=label1.caption+inttostr(a.zahlen[i])+','; end; Thomas |
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
tteiler = array of integer;
|
Jetzt sieht das gesamte ding so aus:
Delphi-Quellcode:
Kommen aber keine Teiler raus :(
type tbruch=record
zaehler:integer; nenner:integer; positiv:boolean; end; type zahlen=array of Integer; implementation {$R *.dfm} function teilermenge(zahl:integer):zahlen; var i:integer; begin SetLength(result, Length(result) + 1); result[length(result)-1]:=1; for i:=2 to (zahl div 2) do begin if (i mod zahl) = 0 then begin SetLength(result, Length(result)+1); result[length(result)-1]:=i; end; end; end; procedure TForm1.Button1Click(Sender: TObject); var a:zahlen; i:integer; begin label1.Caption:=''; a:=teilermenge(strtoint(edit1.text)); for i:=0 to length(a)-1 do label1.caption:=label1.caption+inttostr(a[i])+','; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz