Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Array ohne typ, aber wie ? (https://www.delphipraxis.net/26936-array-ohne-typ-aber-wie.html)

mimi 1. Aug 2004 11:18


Array ohne typ, aber wie ?
 
Hallo,
ich habe mehre array unterschiedlichen typs und nun möchte ich gerne eine funktion haben die mit allen typen was anfangen kann in etwa so:

procedure DeleteArrayItem(Liste: array of) // aber das geht ja leider nicht :(

hat jemmand eine idee ???

meine derzeitige delete funktion sieht so aus:
Delphi-Quellcode:
procedure TBO.DeleteBall(Index:Integer);
var
  i:Integer;
begin
  if Length(ball) -1 >= 1 then begin
    for i:=Index to HIGH(BALL) do
      BALL[i]:=BALL[i+1];
    SetLength(BALL,Length(ball)-1 );
  end;
end;

mirage228 1. Aug 2004 11:19

Re: Array ohne typ, aber wie ?
 
Zitat:

Zitat von mimi
Hallo,
ich habe mehre array unterschiedlichen typs und nun möchte ich gerne eine funktion haben die mit allen typen was anfangen kann in etwa so:

procedure DeleteArrayItem(Liste: array of) // aber das geht ja leider nicht :(

hat jemmand eine idee ???

meine derzeitige delete funktion sieht so aus:
Delphi-Quellcode:
procedure TBO.DeleteBall(Index:Integer);
var
  i:Integer;
begin
  if Length(ball) -1 >= 1 then begin
    for i:=Index to HIGH(BALL) do
      BALL[i]:=BALL[i+1];
    SetLength(BALL,Length(ball)-1 );
  end;
end;

Hi,

versuch mal
Delphi-Quellcode:
array of const
mfG
mirage228

yankee 1. Aug 2004 11:34

Re: Array ohne typ, aber wie ?
 
schreib' in den Type Beriech:
TStringDynArray = array of string;
Und dann nimm Als Variablentyp TStringDynArray

Phoenix 1. Aug 2004 11:35

Re: Array ohne typ, aber wie ?
 
Schonmal den Typ Variant angeguckt?
Mit einem Array of Variant kannst Du so ziemlich alles machen.

mimi 1. Aug 2004 12:02

Re: Array ohne typ, aber wie ?
 
ist der typ dann egal ???

Hansa 1. Aug 2004 12:25

Re: Array ohne typ, aber wie ?
 
Wenn Du das gleich richtig machen willst 8) dann verwende verkettete dynamische Listen. Damit geht das garantiert. :P

Chewie 1. Aug 2004 13:06

Re: Array ohne typ, aber wie ?
 
Zitat:

Zitat von Hansa
Wenn Du das gleich richtig machen willst 8) dann verwende verkettete dynamische Listen. Damit geht das garantiert. :P

Bei Listen muss genauso ein Typ angegeben werden.

ripper8472 1. Aug 2004 15:02

Re: Array ohne typ, aber wie ?
 
"Array of Pointer", und die pointer dann auf dynamisch angelegte Variablen.
Ich hab zwar nicht direkt im Kopf, wie ich dynamisch Speicher anfordern kann, aber so würd ich's in C machen. Statt nem Array geht natürlich auch ne (verkettete) Listenklasse.
[edit] natürlich sind dann Typecasts unumgänglich

Union 1. Aug 2004 15:27

Re: Array ohne typ, aber wie ?
 
Zitat:

Zitat von mimi
Hallo,
ich habe mehre array unterschiedlichen typs und nun möchte ich gerne eine funktion haben die mit allen typen was anfangen kann in etwa so:

procedure DeleteArrayItem(Liste: array of) // aber das geht ja leider nicht :(

hat jemmand eine idee ???

meine derzeitige delete funktion sieht so aus:
Delphi-Quellcode:
procedure TBO.DeleteBall(Index:Integer);
var
  i:Integer;
begin
  if Length(ball) -1 >= 1 then begin
    for i:=Index to HIGH(BALL) do
      BALL[i]:=BALL[i+1];
    SetLength(BALL,Length(ball)-1 );
  end;
end;

Machs mit Varianten-Arrays

Delphi-Quellcode:
// Deklaration
var Ball : Array of Variant;

// Konstante Zuweisung
Ball := VarArrayOf([1, "Zwei", now]);

// Abfrage der Werte
if VarType(Ball[i]) = varString then...
Ansonsten sind das normale dynamische Arrays (SetLengtht usw.) Schau mal in der Hilfe unter dem Stichwort VarType nach, da bekommst Du alles aufgelistet.

mimi 22. Aug 2004 12:17

Re: Array ohne typ, aber wie ?
 
ich habs jetzt so gemacht:
Delphi-Quellcode:
procedure DeleteArrayItem(liste:array of Variant; Index:Integer);
var
  i:Integer;
begin
  if Length(liste) -1 >= 1 then begin
    for i:=Index to HIGH(liste) do
      liste[i]:=liste[i+1];
    SetLength(liste,Length(liste)-1 );
  end;
end;
aber egal wie ich es mache: schreibe ich z.b. array of const bekomme ich immer den gleichen fehler bei setLength:[Fehler] Tools.pas(87): Inkompatible Typen

woran liegt das ????? was mache ich falsch !


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:09 Uhr.
Seite 1 von 3  1 23      

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