[gelöst] function mit mehreren Results?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
mulcheo
Beiträge: 57
Registriert: Do 1. Aug 2013, 15:11

[gelöst] function mit mehreren Results?

Beitrag von mulcheo »

Hallo, ich wieder ... :)

Ich suche eine Möglichkeit, mehr Struktur und Übersichtlichkeit in mein Prog. zu bekommen und dachte an Folgendes:

Ich habe eine procedure, die prüft, ob der user in einem Text (realisiert via Canvas.TextOut) auf ein Wort geclickt hat, und die dieses Wort nun hinsichtlich seiner ZeilenNummer (in welcher Zeile steht das Wort?) und seiner Wortnummer (um das wievielte Wort dieser Zeile handelt es sich?) bestimmt. Ich würde daraus nun gerne eine function machen, die es mir ermöglicht, bestimmte Werte, die in der ursprünglichen Porcedue ermittelt werden (ZeilenNummer, Wortnummer sowie 2 Koordinaten), auszugeben. geht das? Ein einfaches Result wäre also zu wenig...

Ich dachte dann an etwas, das ich dann später im code etwa so aufrufen könnte (Name der Funktion wäre FindeWort)

VariableEins:=FindeWort.x;
VaribaleZwei:=FindeWort.y;
VaribaleDrei:=FindeWort.ZeilenNummer; u.s.w

hoffentlich ist verständlich, was ich meine
Danke schonmal

P.s. dass FindWort auch Parameter als Eingabe bekommt, blende ich oben kurz mal aus - da liegt ja uch kein Problem drin...
Zuletzt geändert von mulcheo am So 29. Jun 2014, 22:02, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10952
Registriert: Mo 11. Sep 2006, 19:01

Re: function mit mehreren Results?

Beitrag von theo »

Schon mal was von Records gehört? Eine Klasse oder var Parameter ginge auch.

mulcheo
Beiträge: 57
Registriert: Do 1. Aug 2013, 15:11

Re: function mit mehreren Results?

Beitrag von mulcheo »

ja, das record ist mir dann nach dem posten auch eingefallen, hätte ja auch den Vorteil, dass die funtcion dann nich bei jedem Aufruf durchlaufen werden muss; hätte ich auch selbst drauf kommen müssen!

Was genau wäre der Vorteil, wenn ich das über eine Klasse löse? Oder wäre das record im Grunde nicht auch sowas wie eine verkappte Klasse? Ich habe den objektorientierten Ansatz noch nicht ganz verinnerlicht, fürchte ich :)

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: function mit mehreren Results?

Beitrag von Socke »

mulcheo hat geschrieben:Was genau wäre der Vorteil, wenn ich das über eine Klasse löse? Oder wäre das record im Grunde nicht auch sowas wie eine verkappte Klasse? Ich habe den objektorientierten Ansatz noch nicht ganz verinnerlicht, fürchte ich :)
  • Wenn du ausschließlich Daten speichern möchtest, sind records in Ordnung.
  • Wenn du dich nicht mit Zeigern herumschlagen willst, sind Klassen (class) das Richtige.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: function mit mehreren Results?

Beitrag von Michl »

Meine Meinung: Es macht nur Sinn Records/Klassen zu verwenden, wenn diese eine "Eigenberechtigung" haben. Willst Du nur für eine oder einige wenige Prozeduren oder Funktionen mehrere Paramter gleichen Typs zurück geliefert haben, dann wäre
theo hat geschrieben:... var Parameter ...
das Richtige. Siehe http://www.delphi-treff.de/object-pasca ... nen/#c4922

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: function mit mehreren Results?

Beitrag von mschnell »

Nur so nebenbei:

Ich habe 'mal ein Projekt in einer Pascal-ähnlichen Sprache realisiert (PLZ), die tatsächlich mehrere Results erlaubt.

Ich glaube in Python geht sowas auch (Listen ?)

-Michael

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2840
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: function mit mehreren Results?

Beitrag von m.fuchs »

Michl hat geschrieben:Es macht nur Sinn[...]
Aua, warum wird nur so häufig dieser völlig falsche Ausdruck verwendet?
Michl hat geschrieben:Records/Klassen zu verwenden, wenn diese eine "Eigenberechtigung" haben. Willst Du nur für eine oder einige wenige Prozeduren oder Funktionen mehrere Paramter gleichen Typs zurück geliefert haben, dann wäre
theo hat geschrieben:... var Parameter ...
das Richtige.
Nicht unbedingt. Kommt darauf an, wie einfach du es deinen Benutzern machen willst:

Code: Alles auswählen

type
  TMyRecord = record
    Value0: Boolean;
    Value1, Value2, Value3: Integer;
    Value4: String;
  end;
 
procedure A(InValue: String; var Value0: Boolean; var Value1, Value2, Value3: Integer; var Value4: String);
 
function B(InValue: String): TMyRecord;
Wenn der Benutzer A aufruft, muss er fünf Variablen übergeben als Ausgabevariablen. Auch wenn nur nur Value4 benötigen würde. Bei der Funktion B geht das einfacher:

Code: Alles auswählen

  MyValue := B.Value4
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: function mit mehreren Results?

Beitrag von mschnell »

m.fuchs hat geschrieben:
Michl hat geschrieben:Es macht nur Sinn[...]
Aua, warum wird nur so häufig dieser völlig falsche Ausdruck verwendet?
Wörtlich aus dem US-Englischen Rück-übersetzt.

Jede aktive Sprache ändert sich dynamisch.

-Michael

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2840
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

OT: Re: function mit mehreren Results?

Beitrag von m.fuchs »

mschnell hat geschrieben:Jede aktive Sprache ändert sich dynamisch.
Die deutsche Sprache ist Freeware und nicht Opensource. :wink:
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: function mit mehreren Results?

Beitrag von Michl »

http://www.belleslettres.eu/artikel/sin ... zismus.php ...und dabei gebe ich mir eigentlich schon Mühe, dass man meine Kommentare auch lesen kann (Rechtschreibung, Groß-/Kleinschreibung, "Du" groß geschrieben, Kommata usw.)...

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Antworten