AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Array als Referenz einer Methode übergeben
Thema durchsuchen
Ansicht
Themen-Optionen

Array als Referenz einer Methode übergeben

Ein Thema von TheMiller · begonnen am 22. Nov 2009 · letzter Beitrag vom 23. Nov 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

Array als Referenz einer Methode übergeben

  Alt 22. Nov 2009, 10:54
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
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: Array als Referenz einer Methode übergeben

  Alt 22. Nov 2009, 10:57
Du könntest einprocedure bla(a:array of const) übergeben - dann solltest du aber nicht das array an sich ändern (sondern nur die elemente)
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#3

Re: Array als Referenz einer Methode übergeben

  Alt 22. Nov 2009, 10:59
Hm das wäre nicht so toll. Diese Prozedur, an die das Array übergeben wird, erweitert nämlich das Array.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

Re: Array als Referenz einer Methode übergeben

  Alt 22. Nov 2009, 11:01
Hmmm ... dann kannte mal probieren ob das hier geht:procedure bla(var a:array of const) wäre zumindest logisch, aber ob das compiliert ... keine Ahnung ^^
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#5

Re: Array als Referenz einer Methode übergeben

  Alt 22. Nov 2009, 11:03
Probiere ich gleich mal aus. Kann man aber nicht das ganze mit "^" und "@" lösen?

EDIT: Kompiliert nicht. Inkompatible Typen
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#6

Re: Array als Referenz einer Methode übergeben

  Alt 22. Nov 2009, 12:44
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?
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#7

Re: Array als Referenz einer Methode übergeben

  Alt 22. Nov 2009, 13:08
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;
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#8

Re: Array als Referenz einer Methode übergeben

  Alt 22. Nov 2009, 13:20
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Array als Referenz einer Methode übergeben

  Alt 22. Nov 2009, 13:24
Bei Ralphs Methode kannst Du aber das Array auch in FormShow lokal deklarieren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#10

Re: Array als Referenz einer Methode übergeben

  Alt 22. Nov 2009, 13:26
Stehe ich gerade auf dem Schlauch? Ist der Vorschlag von Ralph genau das, was ich wollte? Ich kann's grad nicht testen...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:00 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