AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

"dynamisches " Array

Ein Thema von thomasdrewermann · begonnen am 21. Nov 2002 · letzter Beitrag vom 22. Nov 2002
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von thomasdrewermann
thomasdrewermann

Registriert seit: 8. Jun 2002
Ort: Herne
575 Beiträge
 
Delphi 3 Professional
 
#1

"dynamisches " Array

  Alt 21. Nov 2002, 21:30
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
Sport ist mord...
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#2
  Alt 21. Nov 2002, 21:38
Schau mal in der Hilfe unter Dynamische Arrays, da ist das verständlich beschrieben.
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#3
  Alt 21. Nov 2002, 21:39
Hi,

Delphi-Quellcode:
type
  TRec = Record //Deine Zahlen
    ID: Integer;

  TIrgendwas = Record
    MeinRec: Array of TRec;
  end;
Grüsse, Daniel
  Mit Zitat antworten Zitat
Benutzerbild von thomasdrewermann
thomasdrewermann

Registriert seit: 8. Jun 2002
Ort: Herne
575 Beiträge
 
Delphi 3 Professional
 
#4
  Alt 21. Nov 2002, 21:41
Wie füge ich denn jetzt einen Wert ein?
Wie ermittle ich die gesmat Anzahl aller Werte?

MFG
Thomas
Sport ist mord...
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.459 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5
  Alt 21. Nov 2002, 21:42
Du könntest dir die Hilfe zu "Dynamische Arrays" anschauen.
Im folgenden habe ich mal das wichtigste zusammengefasst:

Deklarieren eines dyn. Arrays:
var MyArray: array of Integer; Anzahl der Elemente festlegen:
SetLength(MyArray, 10); // => [0..9] Dyn. Array um x Elemente vergrößern:
SetLength(MyArray, Length(MyArray) + x); Dyn. Array kopieren:
ZweitesDynArray := Copy(MyArray); Einzelne Elemente in ein neues dyn. Array kopieren:
ZweitesDynArray := Copy(MyArray, 0, 5); // 0..4 kopieren Dyn. Array freigeben:
MyArray := nil;
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#6
  Alt 21. Nov 2002, 21:44
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
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.262 Beiträge
 
Delphi 2006 Professional
 
#7
  Alt 21. Nov 2002, 21:44
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
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von thomasdrewermann
thomasdrewermann

Registriert seit: 8. Jun 2002
Ort: Herne
575 Beiträge
 
Delphi 3 Professional
 
#8
  Alt 21. Nov 2002, 22:32
Irgendwie kommen da keine Teiler zustande.

Dieser Cde soll die Teilermenge einer Zahl bestimmen:
Delphi-Quellcode:
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;
MFG
Thomas
Sport ist mord...
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.459 Beiträge
 
Delphi 10.1 Berlin Professional
 
#9
  Alt 21. Nov 2002, 22:46
Zitat von thomasdrewermann:
Irgendwie kommen da keine Teiler zustande.
Was kommt denn zustande? Etwa eine Exception?
Zitat:
Delphi-Quellcode:
for i:=0 to a.anzahl do
label1.caption:=label1.caption+inttostr(a.zahlen[i])+',';
end;
Schau dir die for-Schleife nochmal genau an.


Zitat:
Delphi-Quellcode:
type tteiler=record
        zahlen:array of Integer;
        anzahl:integer;
end;
Das Feld anzahl benötigst du gar nicht, denn das kannst du mit Length(zahlen) bestimmen, womit dein tteiler dann so deklariert werden kann:
tteiler = array of integer;
  Mit Zitat antworten Zitat
Benutzerbild von thomasdrewermann
thomasdrewermann

Registriert seit: 8. Jun 2002
Ort: Herne
575 Beiträge
 
Delphi 3 Professional
 
#10
  Alt 21. Nov 2002, 22:53
Jetzt sieht das gesamte ding so aus:
Delphi-Quellcode:
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;
Kommen aber keine Teiler raus
Sport ist mord...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf