![]() |
Dynamisches Array referenzieren
Hallo.
Delphi ist im Prinzip Neuland für mich, bisher hab ich immer Sprachen verwendet die diese Sachen intern behandeln, jetzt steh ich grad auf dem Schlauch. Hab zwar ein riesiges Pascalbuch hier, aber das Thema ist unzureichend erklärt. Ich habe ein dynamisches Array of Char in Funktion 1. Es ist weder initialisiert noch hat es irgendwelche Werte, das soll dann in Funktion 2 passieren, aber so dass ich in Funktion 1 danach mit dem Array weiterarbeiten kann. Konkret was passiert also: - Funktion 1 deklariert ein dynamisches Array. Nennen wir es mal ABC. - ABC wird an irgendwie an Funktion 2 weitergegeben - Funktion 2 kopiert dann aus einem bereitsbestehendem Array einen Teil in ABC[] (Das ist das kleinste Problem denke ich. Das geht ja mit Move) - Funktion 1 schickt ABC dann weiter an andere Prozeduren. (Geht um WAVE-Streaming mit OpenAL) 1. Kann man das mit Zeigern geschickt lösen? 2. Geht das mit einem "Open Array", wenn ja: Wie ist denn das zu bewerkstelligen? Ich hab Stunden im Internet gesucht hab aber nichts gefunden dass mir hilft. Es geht hier um eine sehr sehr zeitkritische Anwendung, das heißt die Lösung muss schnell sein. Ich wär euch verbunden wenn mich jemand erleuchten würde. Ich komm einfach nicht selbst drauf, meine Lösungsanstäze scheitern. Weil ich einfach noch nie mit Pointern gearbeitet habe, und es einfach nicht klappen will das dyn. Array als Argumentreferenz zu übergeben. Code sollte ja kein großer anfallen, ich muss einfach nur dieses dynamische Array als Referenz in Funktion 2 kriegen. Gruß, Jan P.s.: WENN es sich mit Zeigern lösen lässt, dann würd ich die Lösung bevorzugen weil das noch oft auf mich zukommen wird in dem Projekt und ich das endlich mal richtig lernen muss. |
Re: Dynamisches Array referenzieren
Hallo,
im Prinzip sollte es in etwas so laufen:
Delphi-Quellcode:
Grüße
type
TCharArray = Array of Char; function function2(CharArray: TCharArray):??? function function1(...):??? implementation function function2(CharArray: TCharArray):??? begin // tue etwas mit CharArray end; function function1(..):???; var CharArray: TCharArray; begin setLength(CharArray,25); function2(CharArray); end; Klaus |
Re: Dynamisches Array referenzieren
Hoffe, hab' das Problem nicht falsch verstanden.
Das dynamische Array muss für beide Bereiche die gleiche Definition haben...
Delphi-Quellcode:
€: Immer wieder Red-Box... ;)
type
TABC = array of Integer; procedure Main; var ABC : TABC; begin SetLength(ABC, 10); // mit ABC irgend etwas machen ABCManipulator(ABC); end; procedure ABCManipulator(var aABC : TABC); var i : Integer; begin for i := Low(aABC) to High(aABC) do aABC[i] := 0; end; |
Re: Dynamisches Array referenzieren
wenn das Array verändert werden soll, dann das VAR nicht vergessen
Delphi-Quellcode:
und ein dynamisches Array ist ja schon intern ein Zeiger auf seinen Inhalt.
function function2(var CharArray: TCharArray):???
[add] jupp, die nette RedBox :mrgreen: |
Re: Dynamisches Array referenzieren
Super.
Danke an euch, das scheint so einwandfrei zu funktionieren. Wie ich jetzt auf Pointer gekommen bin weiß ich auch nicht :mrgreen: Wieder was gelernt. Gruß, Jan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:33 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-2025 by Thomas Breitkreuz