AGB  ·  Datenschutz  ·  Impressum  







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

Dynamisches Array referenzieren

Ein Thema von JanW · begonnen am 23. Jun 2009 · letzter Beitrag vom 23. Jun 2009
Antwort Antwort
JanW

Registriert seit: 5. Jun 2009
8 Beiträge
 
Lazarus
 
#1

Dynamisches Array referenzieren

  Alt 23. Jun 2009, 12:21
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.
Jan
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Dynamisches Array referenzieren

  Alt 23. Jun 2009, 12:27
Hallo,

im Prinzip sollte es in etwas so laufen:

Delphi-Quellcode:
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;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Dynamisches Array referenzieren

  Alt 23. Jun 2009, 12:29
Hoffe, hab' das Problem nicht falsch verstanden.

Das dynamische Array muss für beide Bereiche die gleiche Definition haben...
Delphi-Quellcode:
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;
€: Immer wieder Red-Box...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: Dynamisches Array referenzieren

  Alt 23. Jun 2009, 12:37
wenn das Array verändert werden soll, dann das VAR nicht vergessen
function function2(var CharArray: TCharArray):??? und ein dynamisches Array ist ja schon intern ein Zeiger auf seinen Inhalt.

[add] jupp, die nette RedBox
$2B or not $2B
  Mit Zitat antworten Zitat
JanW

Registriert seit: 5. Jun 2009
8 Beiträge
 
Lazarus
 
#5

Re: Dynamisches Array referenzieren

  Alt 23. Jun 2009, 12:38
Super.
Danke an euch, das scheint so einwandfrei zu funktionieren.
Wie ich jetzt auf Pointer gekommen bin weiß ich auch nicht


Wieder was gelernt.

Gruß,
Jan
Jan
  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 11:02 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