Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ReDim - wie geht das bei Delphi??? (https://www.delphipraxis.net/113332-redim-wie-geht-das-bei-delphi.html)

chrisyFIAE 6. Mai 2008 10:33


ReDim - wie geht das bei Delphi???
 
Hallo,
wollte mal ein kleines Programm von VBA in Delphi umschreiben, bleibe aber bei ReDim stecken.
Könnt Ihr mir evtl. helfen?
Hier der VBA-Code:
Delphi-Quellcode:
Dim TA As Double
Dim DF() As Long, MAX As Long
Private Sub cmdGO_Click()
  Dim I As Long
  MAX = Me.tbMAX
  ReDim DF(1 To MAX)
  For I = 1 To MAX
    DF(I) = Rnd * MAX
  Next I
  Me.lbUNSORT.List = DF
  TA = Timer
  BubbleSort DF
  Me.Caption = Timer - TA
  Me.lbSORT.List = DF
End Sub
Also ich habe gelesen, dass es evtl. mit VarArrayCreate gehen soll, weis aber echt nicht mehr weiter :wall: .

Vielen Dank schonmal im Vorraus für Eure Hilfen!!!

Der Chrisy

sakura 6. Mai 2008 10:42

Re: ReDim - wie geht das bei Delphi???
 
Delphi-Referenz durchsuchenSetLength erledigt das für Dich, allerdings sind dabei alle Arrays 0-besiert ;)

...:cat:...

Klaus01 6. Mai 2008 10:43

Re: ReDim - wie geht das bei Delphi???
 
Hallo,

ich denke Du redest von dynamischen Array und suchst wahrscheinlich setLength.

Grüße
Klaus

chrisyFIAE 6. Mai 2008 11:54

Re: ReDim - wie geht das bei Delphi???
 
huhu,
danke für eure Antworten.
Dann lag ich wohl ziemlich falsch.
Aber wenn ich das richtig lese in der Delphi-Hilfe, dann müsste ich also eine neue Prozedur extra für dieses ReDim beginnen?
Ich weis einfach nicht wo ich dieses DF und dieses 1 To MAX hinstecken soll.

Gruß,
Der Chrisy

Phoenix 6. Mai 2008 12:03

Re: ReDim - wie geht das bei Delphi???
 
Zitat:

Zitat von chrisyFIAE
Delphi-Quellcode:
Dim TA As Double
Dim DF() As Long, MAX As Long
Private Sub cmdGO_Click()
  Dim I As Long
  MAX = Me.tbMAX
  ReDim DF(1 To MAX)
  For I = 1 To MAX
    DF(I) = Rnd * MAX
  Next I
  Me.lbUNSORT.List = DF
  TA = Timer
  BubbleSort DF
  Me.Caption = Timer - TA
  Me.lbSORT.List = DF
End Sub

Delphi-Quellcode:

// oben im Form:
private
  TA: double;
  DF: array of long;
  MAX: long;

function myForm.btnGOClick(sender: TObject);
var i: long;
begin
  MAX := 0 // keine Ahnung was Me.tbMAX is... ;
  setLength(DF, MAX);
  for i := 0 to (MAX - 1) do // arrays in delphi fangen bei 0 an..
  begin
    DF[i] = // hier füllen...;
  end;

  // und hier dann sortieren und die ausgabe-listen füllen...
end;
Edit: Nein, keine EventArgs... dat is delphi, net .NET ;-)

mkinzler 6. Mai 2008 12:04

Re: ReDim - wie geht das bei Delphi???
 
Code:
Dim DF() As Long
...
ReDim DF(1 To MAX)
Delphi-Quellcode:
df: array of LongInt;
...
SetLength( df, MAX-1);

QuickAndDirty 6. Mai 2008 12:34

Re: ReDim - wie geht das bei Delphi???
 
und es gibt kein!! ReDim Preserve in delphi

Edit : Nehme alles zurück und behaupte das Gegenteil

sakura 6. Mai 2008 13:01

Re: ReDim - wie geht das bei Delphi???
 
Zitat:

Zitat von QuickAndDirty
und es gibt kein!! ReDim Preserve in delphi

Und was macht SetLength dann? Genau das, was es in Delphi nicht gibt ist ein ReDim ohne Preserve, aber das ist egal, wenn einen die Werte nach dem ReDim eh nicht mehr interessieren.

...:cat:...

Christian Seehase 6. Mai 2008 15:40

Re: ReDim - wie geht das bei Delphi???
 
Moin QuickAndDirty,

Zitat:

Zitat von QuickAndDirty
und es gibt kein!! ReDim Preserve in delphi

Zitat:

Zitat von Delphi-Hilfe zu SetLength
Existing characters in the string or elements in the array are preserved,

;-)

QuickAndDirty 6. Mai 2008 16:17

Re: ReDim - wie geht das bei Delphi???
 
wow, ist das schon immer so ?
Tatsache da ist was all die Jahre an mir vorbeigagengen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:02 Uhr.
Seite 1 von 2  1 2      

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