AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi dynamisches Array ohne Typ als Parameter übergeben
Thema durchsuchen
Ansicht
Themen-Optionen

dynamisches Array ohne Typ als Parameter übergeben

Ein Thema von sECuRE · begonnen am 12. Feb 2005 · letzter Beitrag vom 12. Feb 2005
Antwort Antwort
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#1

dynamisches Array ohne Typ als Parameter übergeben

  Alt 12. Feb 2005, 18:08
Hi,

wie der Titel schon sagt würde ich gerne, da ich viele Arrays habe und diese alle mit einer Prozedur sortieren möchte (wenn ich aus der Mitte einen Eintrag herausnehme soll der letzte an diese Stelle rücken, die Länge angeglichen werden und somit Speicher gespart werden), ein dynamisches Array ohne Typ übergeben.

Muss ich da auf eine ObjectList (hab ich nur kurz beim Suchen nach dem Thema aufgeschnappt) zurückgreifen, die dann allerdings nur bei Klassen geht (momentan dachte ich an den Einsatz der genannten Funktion bei Arrays einer von TForm abgeleiteten Klasse, wäre allerdings für andere Sachen auch ganz praktisch, also scheidet ObjectList als "Hauptlösung" wohl aus)?

Oder gleicht ein dynamisches Array, das ja AFAIK aus Eintrag + Pointer auf den nächsten Eintrag im Speicher besteht die leeren Einträge schon an? Dann wäre das natürlich überflüssig.

Danke & cu
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: dynamisches Array ohne Typ als Parameter übergeben

  Alt 12. Feb 2005, 19:50
Zitat von aM0xACiLLiN:
Hi,

wie der Titel schon sagt würde ich gerne, da ich viele Arrays habe und diese alle mit einer Prozedur sortieren möchte (wenn ich aus der Mitte einen Eintrag herausnehme soll der letzte an diese Stelle rücken, die Länge angeglichen werden und somit Speicher gespart werden), ein dynamisches Array ohne Typ übergeben.
Bei Arrays geht das so:
Delphi-Quellcode:
var myArr: array of Integer;
...
procedure Loeschen(ArrIndex: Cardinal; var arr: array of Integer);
begin
 arr[ArrIndex]:= arr[High(arr)];//Element mit Nr. ArrIndex durch letztes Elem. ersetzen
 SetLength(arr, High(arr));//array um eins kürzen -->löscht letztes Element
end;
...
//Beispielaufruf:
Loeschen(3, myArr);//Löscht 4. Element aus myArr (Zählung begint bei 0)
Das gleiche Prinzip müsste auch bein dyn. Arrays ohne Typ gehen.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#3

Re: dynamisches Array ohne Typ als Parameter übergeben

  Alt 12. Feb 2005, 19:55
Hi,

ich weiß, wie das bei Arrays geht. Allerdings zielte ich speziell auf Arrays ohne Typ, weil es eben nicht geht, wenn man die Typangabe einfach weglässt, also so:
Delphi-Quellcode:
function ArrayTest(var test:Array);
begin
ShowMessage('funktioniert');
end;
cu
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

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

Re: dynamisches Array ohne Typ als Parameter übergeben

  Alt 12. Feb 2005, 19:59
Das was du vorhast funktioniert nicht ohne weiteres, da die Typen ja eine unterschiedliche Größe haben können. Eventuell kannst dass mit Array of const regeln, aber da bin ich mir nicht sicher.

Um eine Allgmeine Sortierfunktion zu schreiben müsste man mit Pointer arbeiten und die entsprechenden Daten (Größe des Types, Anzahl der Elemente) mit übergeben.

Oder du versuchst die allgemeingültige Löschfunktion anzupassen:

http://www.delphipraxis.net/internal...ct.php?t=41245

Aber das dürfte schwieriger werden.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#5

Re: dynamisches Array ohne Typ als Parameter übergeben

  Alt 12. Feb 2005, 20:17
Hi,

wieso könnte das Anpassen dieser Funktion (die im Übrigen eigentlich genau das ist was ich suchte, so auf den ersten Blick) schwieriger werden?

cu
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

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

Re: dynamisches Array ohne Typ als Parameter übergeben

  Alt 12. Feb 2005, 20:35
Zitat von aM0xACiLLiN:
Hi,

wieso könnte das Anpassen dieser Funktion (die im Übrigen eigentlich genau das ist was ich suchte, so auf den ersten Blick) schwieriger werden?

cu
Du wolltest doch damit sortieren, oder? Problem ist, dass ich selber teilweise nicht mehr weiss, was ich da gemacht habe. Aber der Aufwand würde sich sicherlich lohnen.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#7

Re: dynamisches Array ohne Typ als Parameter übergeben

  Alt 12. Feb 2005, 20:42
Hi,

nunja, ich dachte anstatt das Element "wirklich" zu löschen würde ein verschieben des letzten Eintrags in die Lücke das Problem ohne viel Aufwand lösen. Ich versuche das mal zu verdeutlichen:

Code:
Array:
[0 - Blah]
[1 - Blubb]
[2 - Lala]
[3 - Lulu]

Jetzt wird z.B. der Eintrag 1 gelöscht:
[0 - Blah]
[]
[2 - Lala]
[3 - Lulu]

Ich würde nun Eintrag 3 an die Stelle schieben, wo vorher Eintrag 1 war:
[0 - Blah]
[1 - Lulu]
[2 - Lala]
Dies funktioniert natürlich nur bei Arrays, bei denen die Sortierreihenfolge unwichtig ist.

cu
  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: dynamisches Array ohne Typ als Parameter übergeben

  Alt 12. Feb 2005, 20:43
Achso, jetzt sehe ich ja erst. Du möchtest aus dem Array einen Eintrag löschen? Dann ist meine Funktion genau das richtige. Diese löscht den Eintrag und verschiebt alle anderen um eins nach oben. Anschliessend wird das Array um eins verkleinert.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#9

Re: dynamisches Array ohne Typ als Parameter übergeben

  Alt 12. Feb 2005, 20:59
Hi,

genau das meinte ich - also vielen Dank für die Funktion

cu

PS: Wenn jemand trotzdem weiß, wie die Übergabe geht, bitte posten
  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 13:50 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