![]() |
Array als Referenz einer Methode übergeben
Hallo,
ich habe hier zwei Methoden in einer eigenen "Bibliotheks-Unit" (eigene Zusammenstellung nützlichen Methoden), die mir Schreibarbeit ersparen sollen. Ich möchte in der Programm-Unit ein dynamisches Array erstellen und dann die Prozedur "AddSQLFields" aus besagter Bib-Unit aufrufen. Dieser soll das zuvor erstellte Array erweitern und die übergebenen Werte eintragen. Wenn alle Werte eingetrage sind, soll eine andere Funktion das Array durchgehen und eine SQL-Query basteln. Nun möchte ich kein globales Array anlegen. Ich würde gerne das Array als Pointer den Methoden übergeben, sodass diese direkt auf das Array zugreifen. Nun ist ja ein Array schon ein Pointer. Könnt ihr mir Tipps geben, bitte? Vielen Dank im Voraus |
Re: Array als Referenz einer Methode übergeben
Du könntest ein
Delphi-Quellcode:
übergeben - dann solltest du aber nicht das array an sich ändern (sondern nur die elemente)
procedure bla(a:array of const)
|
Re: Array als Referenz einer Methode übergeben
Hm das wäre nicht so toll. Diese Prozedur, an die das Array übergeben wird, erweitert nämlich das Array.
|
Re: Array als Referenz einer Methode übergeben
Hmmm ... dann kannte mal probieren ob das hier geht:
Delphi-Quellcode:
wäre zumindest logisch, aber ob das compiliert ... keine Ahnung ^^
procedure bla(var a:array of const)
|
Re: Array als Referenz einer Methode übergeben
Probiere ich gleich mal aus. Kann man aber nicht das ganze mit "^" und "@" lösen?
EDIT: Kompiliert nicht. Inkompatible Typen |
Re: Array als Referenz einer Methode übergeben
Hm... bis jetzt habe ich noch keine Lösung, aber eine weitere Idee, die ich allerdings für sehr unschön halte. Deshalb wollte ich fragen, was ihr davon haltet:
Und zwar könnte ich doch von der Methode, die Daten ins Array hinzufügt, mir das neue Array zurückgeben lassen. Das Problem ist ja, dass in der Funktion nicht das Array aus der Haupt-Unit verwendet wird, sondern ein neues erstellt wird. Wenn ich mir das zurückgeben lasse, könnte ich durch "hin-und-her-schieben" von Arrays die Werte addieren. Wie gesagt, es ist sehr unschön, aber mir fällt keine andere Lösung ein.. Oder könnt ihr mich davon durch andere Lösungen abhalten? |
Re: Array als Referenz einer Methode übergeben
Verstehe ich das richtig?
Meinst du so etwas...
Delphi-Quellcode:
type tNumArray = Array of Byte;
var NumArray : tNumArray; procedure AddNumbers(var a:tNumArray); begin SetLength(a,High(a)+3); // add 2 numbers a[High(a)-1]:=44; a[high(a) ]:=55; end; procedure TfoTest03.FormShow(Sender:TObject); var i : Integer; begin SetLength(NumArray,Listbox1.Items.Count); for i:=0 to Listbox1.Items.Count-1 do // array aus listbox1 NumArray[i]:=StrToInt(Listbox1.Items[i]); // füllen AddNumbers(NumArray); // array erweitern for i:=0 to high(NumArray) do // array in listbox2 Listbox2.Items.Add(IntToStr(NumArray[i])) // anzeigen end; |
Re: Array als Referenz einer Methode übergeben
Ja, genau so, nur ohne globalem Array.
Ich möchte durch verschiedene Methoden auf ein Array zugreifen, welches ich vorher übergebe - eben um die globalen Arrays zu vermeiden. |
Re: Array als Referenz einer Methode übergeben
Bei Ralphs Methode kannst Du aber das Array auch in FormShow lokal deklarieren.
|
Re: Array als Referenz einer Methode übergeben
Stehe ich gerade auf dem Schlauch? Ist der Vorschlag von Ralph genau das, was ich wollte? Ich kann's grad nicht testen...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:57 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 by Thomas Breitkreuz