Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Array einem anderen Array zuweisen (https://www.delphipraxis.net/10840-array-einem-anderen-array-zuweisen.html)

chruttli 26. Okt 2003 14:03


Array einem anderen Array zuweisen
 
Hi @all

Ich habe folgendes Problem:

Ich übergebe mittels einer Funktion ein Array und möchte nun dieses Arry in einer lokalen Variable ablegen.
Leider erscheint bei mir immer die Fehlermeldung "Incompatible Types" *sniff*

Hier der relevante Code:

Der Adressen-Record (nur wegen der Vollständigkeit aufgeführt)
Delphi-Quellcode:
Tadresse = record
  id : integer;
  veranstalter : Tveranstalter;
  firma : string;
  name : string;
  vorname : string;
  strasse : string;
  ort : Tort;
  anrede : Tanrede;
  briefanrede : Tanrede;
  telefon : string;
  telefax : string;
  email : string;
  bemerkungen : string;
  merker : string;
  l_kontakt : TDateTime;
  ins_rg_adresse : boolean;
  mit_rg_adresse : boolean;
  probeabzug_adresse : boolean;
  erfassungsdatum : TDateTime;
  erfasser : Tuser;
  mutationsdatum : TDateTime;
  mutierer : Tuser;
end;
der Filter-Record
Delphi-Quellcode:
type
  TaddressFilter = record
    AddressArray : array of Tadresse;
    activeAddress : integer;
  end;
das Formular (mit der Funktion)
Delphi-Quellcode:
type
  TfrmAdressenFilter = class(TForm)
  private
    adressen : array of Tadresse;
  public
    function formularShow(all_adressen : array of Tadresse) : TaddressFilter;
  end;
die Funktion (mit dem eingentlichen Problem
Delphi-Quellcode:
function TfrmAdressenFilter.formularShow(all_adressen : array of Tadresse) : TaddressFilter;
begin
  SetLength(adressen, length(all_adressen));

  // Array übertragen...

  // Diese Lösung funktionierte, ist aber etwas langsam, aber eben sie funktionierte
  {
  for I := 0 to length(all_adressen)-1 do   // Iterate
    begin
      adressen[I] := all_adressen[I]
    end;   // for
  }

  // Mein neuer Lösungsansatz (Delphi-Hilfe macht es auch so)... wäre schneller, bringt aber eben
  // die Fehlermeldung "incompatible types"
  adressen := Copy(all_adressen);
end;
Was mache ich falsch??? :(

Christian Seehase 26. Okt 2003 14:25

Re: Array einem anderen Array zuweisen
 
Moin Chruttli,

mach Dir einfach zusätzlich einen Typ

Delphi-Quellcode:
type
  TaAdresse = array of TAdresse;
und verwende den statt array of TAdresse.

BTW:
Es wäre ganz sinnvoll, wenn Du Dir noch ein Kürzel (Präfix) ausdenkst, mit dem Du eigene neue Typenbezeichner deklarierst (gilt vor allem bei Klassenbezeichnern), um die Gefahr von Kollisionen mit Typen, z.B. aus Komponenten die Du Dir installierst, zu vermeiden.

Bei den Indys wäre das z.B. id, so dass die Typen alle mit Tid anfangen.

chruttli 26. Okt 2003 15:08

Re: Array einem anderen Array zuweisen
 
Hmmmm... cool... es funktioniert...

Vielen Dank für dein Tipp :hello:

Aber noch eine kleine Frage...
Wieso funktioniert es jetzt??? Was ist genau der Unterschied, den es ausmacht :?:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 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 by Thomas Breitkreuz