AGB  ·  Datenschutz  ·  Impressum  







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

Eine Function ein Array liefern lassen

Ein Thema von mojo777 · begonnen am 17. Mär 2005 · letzter Beitrag vom 17. Mär 2005
Antwort Antwort
Seite 1 von 2  1 2      
mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#1

Eine Function ein Array liefern lassen

  Alt 17. Mär 2005, 13:14
Hallo, ist es eigentlich in delphi möglich eine funktion ein array liefern zu lassen?
bisher habe ich immer irgendeine notlösung entwickelt, doch vielleicht weiss jemand rat.

also ich meine soetwas wie function gibmirfive (variable:String):array of Integer; denke im voraus.

mojo
Muh macht die kUh
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#2

Re: Eine Function ein Array liefern lassen

  Alt 17. Mär 2005, 13:36
Erstelle dir einfach einen neuen Typ.

Delphi-Quellcode:
type
  TMyIntArary: array of Integer;

und dann

function gibmirfive (variable:String): TMyIntArray;
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#3

Re: Eine Function ein Array liefern lassen

  Alt 17. Mär 2005, 13:46
ahaaahh!!
ok danke!
Muh macht die kUh
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#4

Re: Eine Function ein Array liefern lassen

  Alt 17. Mär 2005, 13:58
Bei Rückgabe von Arrays durch Funktionen ist es nicht garantiert, dass der Speicherbereich, in dem der Array liegt, unberührt bleibt, da dieser nach Beenden der Funktion wieder von anderen Programmteilen nutzbar ist.

Besser wäre da:

Delphi-Quellcode:
procedure gibmirfive (variable:String; var MyIntArray: array of integer);

Aufruf per:

gibmirfive('String', ArrayName);

statt

ArrayName := gibmirfive('String');
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#5

Re: Eine Function ein Array liefern lassen

  Alt 17. Mär 2005, 14:11
ja. das ist dann aber wieder die art der notlösung, die ich bisher benutzt habe. quasi eine aussen leigene variable als array in der procedure bearbeiten und dann von woanders verweden...
aber klappt es denn auch wenn der zugriff units/classen übergreifend erfolgt?
Muh macht die kUh
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#6

Re: Eine Function ein Array liefern lassen

  Alt 17. Mär 2005, 14:38
Warum sollte das nicht gehen?
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#7

Re: Eine Function ein Array liefern lassen

  Alt 17. Mär 2005, 14:55
@ste_ett

Kenne mich nun nciht so aus, aber:

Angenommen ich gebe TMyIntArray zurück.
Gut, vielleicht wird es dann überschrieben, aber einmal wird es ja 100% zurückgegeben, sonst könnte bei jeder Rückgabe ja Fehler entstehen.

Wenn ich dann MyArray := GiveMeTheArray(xxx); mache, wird die Rückgabe ja sowieso einem neuem Array ( MyArray ) zugestellt und somit ist es ja egal, ob die Rückgabe wieder überschrieben wird, oder?

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#8

Re: Eine Function ein Array liefern lassen

  Alt 17. Mär 2005, 16:16
Zitat von Airblader:
@ste_ett

Kenne mich nun nciht so aus, aber:

Angenommen ich gebe TMyIntArray zurück.
Gut, vielleicht wird es dann überschrieben, aber einmal wird es ja 100% zurückgegeben, sonst könnte bei jeder Rückgabe ja Fehler entstehen.

Wenn ich dann MyArray := GiveMeTheArray(xxx); mache, wird die Rückgabe ja sowieso einem neuem Array ( MyArray ) zugestellt und somit ist es ja egal, ob die Rückgabe wieder überschrieben wird, oder?

air
Und was ist, wenn man die Werte auslesen will und mit einzelnen Werten arbeiten möchte? Also nicht mit dem ganzen Array, sondern nur mit einzelnen Indexen. Klar, man könnte dann natürlich das ganze Array vorher abspeichern, aber ist doch immer praktisch, wenn es ohne diesen Umweg ginge
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#9

Re: Eine Function ein Array liefern lassen

  Alt 17. Mär 2005, 16:19
@malo

naja, aber wenn man eina rray zurückgibt muss man ja sowieso mit indexen arbeiten, oder halt die arrayelemente mit entspr. index in einer neuen variablen ablegen
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
moritz

Registriert seit: 18. Apr 2003
1.037 Beiträge
 
#10

Re: Eine Function ein Array liefern lassen

  Alt 17. Mär 2005, 16:21
Zitat von ste_ett:
Bei Rückgabe von Arrays durch Funktionen ist es nicht garantiert, dass der Speicherbereich, in dem der Array liegt, unberührt bleibt, da dieser nach Beenden der Funktion wieder von anderen Programmteilen nutzbar ist.

Besser wäre da:

Delphi-Quellcode:
procedure gibmirfive (variable:String; var MyIntArray: array of integer);

Aufruf per:

gibmirfive('String', ArrayName);

statt

ArrayName := gibmirfive('String');
Falsch. In der Funktion, die diese Funktion aufruft, ist für die Rückgabevariable ja ein Speicher definiert. Und dieser bleibt erhalten.

Gruß
"Optimistisch ist diejenige Weltanschauung, die das Sein höher als das Nichts stellt und so die Welt und das Leben als etwas an sich Wertvolles bejaht."
Albert Schweitzer
  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 21:05 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