AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Gemeinsamer Array-typ?

Ein Thema von malo · begonnen am 15. Apr 2005 · letzter Beitrag vom 15. Apr 2005
Antwort Antwort
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#1

Gemeinsamer Array-typ?

  Alt 15. Apr 2005, 15:25
Hi!

Ich suche eine Möglichkeit, einen beliebigen Array-Typ als Parameter einer Funktion zu erwarten. Diese soll das Array ab einem bestimmten Index "um eins aufrücken". Ich will das jedoch ziemlich allgemein halten, und möglichst ohne Überladungen. Die sind zuviel Tipparbeit
  Mit Zitat antworten Zitat
Waldteufel
(Gast)

n/a Beiträge
 
#2

Re: Gemeinsamer Array-typ?

  Alt 15. Apr 2005, 15:26
Hi.

Delphi-Quellcode:
function aufruecken(x : variant, wieviel : integer = 1) : variant;
var
  i : integer;
  y : variant;
begin
  y := VarArrayCreate([0, length(x) + wieviel], VarType(x));
  for i := length(x) + wieviel downto 1 do
    y[i] := x[i - wieviel];
end;
So müsste es gehen...
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Gemeinsamer Array-typ?

  Alt 15. Apr 2005, 15:29
Hi!

Bei Google suchenarray of const
http://community.borland.com/article...,15582,00.html
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#4

Re: Gemeinsamer Array-typ?

  Alt 15. Apr 2005, 15:30
Zitat von Waldteufel:
Hi.

Delphi-Quellcode:
function aufruecken(x : variant, wieviel : integer = 1) : variant;
var
  i : integer;
  y : variant;
begin
  y := VarArrayCreate([0, length(x) + wieviel], VarType(x));
  for i := length(x) + wieviel downto 1 do
    y[i] := x[i - wieviel];
end;
So müsste es gehen...
Danke... aber es sollte eigentlich eine array-variable übergeben und bearbeitet werden. Es sollte keins neu erstellt werden, das bringt mir reichlich wenig
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#5

Re: Gemeinsamer Array-typ?

  Alt 15. Apr 2005, 15:35
Bei folgendem Code kommt aber die fehlermeldung "inkompatible Typen":

Delphi-Quellcode:
procedure test(a: array of const);
begin
  showMessage('test');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  a: array[0..1] of string;
begin
  a[0] := 'test';
  test(a);
end;
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: Gemeinsamer Array-typ?

  Alt 15. Apr 2005, 16:19
Zitat von malo:
Ich suche eine Möglichkeit, einen beliebigen Array-Typ als Parameter einer Funktion zu erwarten. Diese soll das Array ab einem bestimmten Index "um eins aufrücken". Ich will das jedoch ziemlich allgemein halten, und möglichst ohne Überladungen. Die sind zuviel Tipparbeit
Es gibt min. 4 Arten, wie man Arrays als Parameter übergeben kann:
1.) "normale" Array-Parameter für statische Arrays
2.) offene Array-Parameter für dynamische Arrays
3.) variante offene Array-Parameter
4.) Arrays im Datentyp Variant abgebildet
Die 4 Arten sind nicht miteinander kompatibel!
Die Idee "eine Procedure für Alles" kannst du also gleich begraben.

Offene Array-Parameter sind an einen Datentyp gebunden. Du musst also für jeden Datentyp eine eigene
Prozedure schreiben.

Variante offene Array-Parameter haben einen grossen Overhead; bei sehr grossen Arrays sollte die nicht verwenden.
Dies gilt ebenso für Nummer 4.).

Es gäbe da noch die Funktion Slice, die Teile von dynamischen Arrays liefert.
Aber da ist wohl viel Compiler-Magic dabei; ich habe den Sourcecode dazu nicht gefunden.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#7

Re: Gemeinsamer Array-typ?

  Alt 15. Apr 2005, 17:13
Zitat von shmia:
Die Idee "eine Procedure für Alles" kannst du also gleich begraben.
Schade... also, grundsätzlich brauche ich auch nur einen Array-Typ für meine Zwecke. Ich wollte die Prozedur nur verallgemeinern, damit ich die nich umschreiben muss, falls ich einen anderen Array-Typ brauche. Wenn das nicht geht, ist das halt pech.
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#8

Re: Gemeinsamer Array-typ?

  Alt 15. Apr 2005, 17:56
Also zum Löschen hab ich eine ultimative Funktion geschrieben. Such mal nach DeleteArray in der Codelib. Eventuell kannst du es an deine Bedürfnisse anpassen, allerdings wird dort auch bissle Assembler verwendet.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:30 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