AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Idee gesucht: Mehrere Daten mit Funktion zurückgeben
Thema durchsuchen
Ansicht
Themen-Optionen

Idee gesucht: Mehrere Daten mit Funktion zurückgeben

Ein Thema von Andreas L. · begonnen am 28. Nov 2006 · letzter Beitrag vom 29. Nov 2006
Antwort Antwort
Seite 1 von 2  1 2      
Andreas L.
(Gast)

n/a Beiträge
 
#1

Idee gesucht: Mehrere Daten mit Funktion zurückgeben

  Alt 28. Nov 2006, 19:46
Hi,
ich habe eine Funktion geschrieben die mehrere Daten (Strings, Booleans und Integers) aus einer Datei extrahiert. Diese Daten sollen über nur diese eine Funktion dem User zur Verfügung stehen. Ich dachte da an einen Record

Delphi-Quellcode:
type
Tsomething = record
 value1: String[100];
 value2: Boolean;
 value3: Integer;
end;
den ich der Funktion dann einfach als Rückgabewert geben
function bla(......):Tsomething; Dieser record und die Funktion sind in einer extra Unit ausgelagert. Jetzt ist meine Frage:
Kann der User der diese Unit z. B. in seiner Haupt-Unit einbindet (uses-Klausel) einfach auf den zurückgegebenen Record zugreifen obwohl Tsomething nicht in seiner Haupt-Unit deklariert ist? Und wie macht er das dann? So wie mit einen normalen, in der Unit deklarierten Record?

Schonmal Danke

ciao,
Andy
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Idee gesucht: Mehrere Daten mit Funktion zurückgeben

  Alt 28. Nov 2006, 19:51
Zitat:
Kann der User der diese Unit z. B. in seiner Haupt-Unit einbindet (uses-Klausel) einfach auf den zurückgegebenen Record zugreifen obwohl Tsomething nicht in seiner Haupt-Unit deklariert ist?
Ja, du kannst ja auch auf Typen zugreifen, die du aus anderen Units importierst.
Zitat:
Und wie macht er das dann? So wie mit einen normalen, in der Unit deklarierten Record?
Ja.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Idee gesucht: Mehrere Daten mit Funktion zurückgeben

  Alt 28. Nov 2006, 20:00
Zitat von mkinzler:
Ja, du kannst ja auch auf Typen zugreifen, die du aus anderen Units importierst.
Jo und zwar bezieht sich das auf alle Typen und Funktionen, welche im Interface-Teil definiert wurden.
$2B or not $2B
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#4

Re: Idee gesucht: Mehrere Daten mit Funktion zurückgeben

  Alt 28. Nov 2006, 20:01
Ahh, das wahr ja einfach,

Danke an euch
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Idee gesucht: Mehrere Daten mit Funktion zurückgeben

  Alt 29. Nov 2006, 08:21
Allerdings gibt es (wie immer) auch hier einen Fallstrick:
Wenn der Record in verschiedenene Units deklariert ist, ist er nicht gleich, obwohl er gleich aufgebaut ist und gleich heisst.
Also muss man den Record in EINER Unit deklarieren und diese EINE Unit in die anderen Units einbinden. Somit ist der Record nur einmal deklariert und somit 100%-ig identisch.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#6

Re: Idee gesucht: Mehrere Daten mit Funktion zurückgeben

  Alt 29. Nov 2006, 14:01
Zitat von RavenIV:
Allerdings gibt es (wie immer) auch hier einen Fallstrick:
Wenn der Record in verschiedenene Units deklariert ist, ist er nicht gleich, obwohl er gleich aufgebaut ist und gleich heisst.
Also muss man den Record in EINER Unit deklarieren und diese EINE Unit in die anderen Units einbinden. Somit ist der Record nur einmal deklariert und somit 100%-ig identisch.
Hab auch nur eine Unit. Also kein Problem.

Aber gibt es auch eine record-Liste? In diesen Tutorial (http://dsdt.info/tutorials/typdateien/) werden die records ja in eine Datei abgelegt. Gibt es auch eine Möglichkeit das ich per Funktion mehrere records zurückgebe?

Delphi-Quellcode:
type
Tsomething = record
value1: String[100];
value2: Boolean;
value3: Integer;
end;
...
function blubb:Tsomething;
Es sollen also mehrere records zurückgegeben werden.
function blubb:array of Tsomething; Geht das so irgendwie? Wenn ja, wie verwende ich Arrays?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Idee gesucht: Mehrere Daten mit Funktion zurückgeben

  Alt 29. Nov 2006, 14:05
Delphi-Quellcode:
  TMyRecArray = array of TSomething;

  function Foobar: TMyRecArray;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#8

Re: Idee gesucht: Mehrere Daten mit Funktion zurückgeben

  Alt 29. Nov 2006, 14:06
Zitat von Luckie:
Delphi-Quellcode:
  TMyRecArray = array of TSomething;

  function Foobar: TMyRecArray;
Und wie greift der User darauf zu?

edit1.text := TmyRecArry[1].value1; //1 für datensatz 2?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Idee gesucht: Mehrere Daten mit Funktion zurückgeben

  Alt 29. Nov 2006, 14:15
So:
Delphi-Quellcode:
type
  TMyRec = record
    FName: ShortString;
  end;

  TMyRecArray = array[0..1] of TMyRec;


function FillMyRecArrays: TMyRecArray;
var
  MyRecArray: TMyRecArray;
  i: Integer;
begin
  for i := 0 to length(MyRecArray) - 1 do
  begin
    MyRecArray[i].FName := IntToStr(i);
  end;
  Result := MyRecArray;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  MyRecArray: TMyRecArray;
  i: Integer;
begin
  MyRecArray := FillMyRecArrays;
  for i := 0 to length(MyRecArray) - 1 do
    ShowMessage(MyRecArray[i].FName);
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#10

Re: Idee gesucht: Mehrere Daten mit Funktion zurückgeben

  Alt 29. Nov 2006, 14:21
Zitat von Luckie:
So:
Delphi-Quellcode:
type
  TMyRec = record
    FName: ShortString;
  end;

  TMyRecArray = array[0..1] of TMyRec;


function FillMyRecArrays: TMyRecArray;
var
  MyRecArray: TMyRecArray;
  i: Integer;
begin
  for i := 0 to length(MyRecArray) - 1 do
  begin
    MyRecArray[i].FName := IntToStr(i);
  end;
  Result := MyRecArray;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  MyRecArray: TMyRecArray;
  i: Integer;
begin
  MyRecArray := FillMyRecArrays;
  for i := 0 to length(MyRecArray) - 1 do
    ShowMessage(MyRecArray[i].FName);
end;
2 Fragen habe ich noch:
1. Kann TMyRecArray = array[0..1] of TMyRec; nur 2 Einträge beinhalten? Wie mache ich das er unendlich viele Einträge haben kann. Also ein dynamischer Array?
2. Wenn ich einen record definiere:
Delphi-Quellcode:
type
tsomething = record;
 blubb: String[50];
Muss ich dann immer angeben wie viel Speicher reserviert werden soll (hier für 50 Zeichen)? Oder kann ich das auch weglassen um so beliebig lange Strings zu speichern?
  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 19:24 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