Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dynamische Arrays in normale Arrays umwandeln (https://www.delphipraxis.net/43700-dynamische-arrays-normale-arrays-umwandeln.html)

sinblur 7. Apr 2005 12:28


Dynamische Arrays in normale Arrays umwandeln
 
Hi,

sitze hier vor einem Problem.
Hab hier ne VCL(Delphi 4) die ich gerne Delphi3-konform umschreiben moechte.

Mein Problem besteht darin, dass ich nicht weiss wie ich die Arrays umschreiben muss.


Delphi-Quellcode:
var FByteArray : array of Byte;
Da dies in Delphi3 nich funktioniert hab ichs mal so probiert:

Delphi-Quellcode:
FByteArray : array[1..100] of Byte;
daraufhin kommen dann solche Fehler wie: Inkompatible Typen: 'Array' und 'Cardinal'
oder Inkompatible Typen: 'Array' und 'Word'
Delphi-Quellcode:
SetLength(FByteArray,FPacket^.ResponseCounter);
//Kann ja nich gehen, da das Array nicht dynamisch erzeugt wurde. Wie koennte es funktionieren?

Wie koennte ich denn LINK fuer mein Problem einsetzen?

Danke schonmal

Gruss Sinblur

Luckie 7. Apr 2005 12:30

Re: Dynamische Arrays in normale Arrays umwandeln
 
Gibt es unter D3 schon die Klasse TList? Dann nimm doch die.

sinblur 7. Apr 2005 12:33

Re: Dynamische Arrays in normale Arrays umwandeln
 
Ja, TList gibt es.

Aber wie hilft mir das bei meinem Problem?
Bin noch ein kleiner Delphi-DAU!

//edit wenn ich dies einsetze:
Delphi-Quellcode:
var FByteArray : TList;
sagt es immernoch: Inkompatible Typen: 'Array' und 'Cardinal'

Luckie 7. Apr 2005 12:49

Re: Dynamische Arrays in normale Arrays umwandeln
 
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
  TMyRec = record
    Zahl: Integer;
  end;
  PMyRec = ^TMyRec;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  MyDynArray: TList;
  MyRec: PMyRec;
  i: Integer;
begin
  MyDynArray := TList.Create;
  try
    // füllen
    for i := 0 to 99 do
    begin
      // Speicher anfordern
      New(MyRec);
      // Irgendwas zuweisen
      MyRec.Zahl := Random(50);
      // in Liste aufnehmen
      MyDynArray.Add(MyRec);
    end;
    // anzeigen
    for i := 0 to MyDynArray.Count - 1 do
    begin
      // aus Liste "rausholen"
      MyRec := MyDynArray.Items[i];
      // in Listbox ausgeben
      Listbox1.Items.Add(IntToStr(MyRec.Zahl));
    end;
  finally
    // Speicher wieder freigben
    for i := 0 to MyDynArray.Count - 1 do
    begin
      // Listeneinträge freigben
      MyRec := MyDynArray.Items[i];
      Dispose(Myrec);
    end;
    // Liste selber wieder freigeben
    MyDynArray.Free
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
end;
Ein Blick in die Hilfe hätte es auch getan.


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