AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Property einer Klasse als Var-Parameter einer Procedure übergeben
Thema durchsuchen
Ansicht
Themen-Optionen

Property einer Klasse als Var-Parameter einer Procedure übergeben

Ein Thema von bernau · begonnen am 8. Mai 2017 · letzter Beitrag vom 8. Mai 2017
Antwort Antwort
nahpets
(Gast)

n/a Beiträge
 
#1

AW: Property einer Klasse als Var-Parameter einer Procedure übergeben

  Alt 8. Mai 2017, 11:30
Ich spinne einfach mal ein bisserl rum.

Würde sowas in der Art eine für Dich (sinngemäß) nutzbare Alternative sein?
(ungetestet hingedaddelt, nur so als Idee.)
Delphi-Quellcode:
Type
  tCheckString = record
    Error : Integer;
    Value : String;
  end;

function TTestForm.AssignTheValue(aDescription:string; aString1: String; aString2: String): tCheckString;
begin
  if aString1 < aString2 then begin
    Result.Error := -1;
    Result.Value := aString2;
    WriteToLog(Format('%s: %s < %s',[aDescription, aString1, aString2]));
  end else
  if aString1 > aString2 then begin
    Result.Error := 1;
    Result.Value := aString2;
    WriteToLog(Format('%s: %s > %s',[aDescription, aString1, aString2]));
  end else begin
    Result.Error := 0;
    Result.Value := aString1;
    WriteToLog(Format('%s: %s = %s',[aDescription, aString1, aString2]));
  end;
end;

// Aufruf ungefähr sowas:
var
  CheckString : tCheckString;

begin
  // Gibt beim Aufruf dann statt eines Einzeilers immer 'nen Zweizeiler,
  // aber weniger Aufwand als eine annähernd unüberschaubare Anzahl von Überladungen.
  CheckString := AssignTheValue('Beschreibung', Edit1.Text, 'Vorgabestring');
  if CheckString.Error <> 0 then Edit1.Text := CheckString.Value;

  // Oder so, wenn im Quelltext keine Auswertung von Error notwendig sein sollte.
  Edit1.Text := AssignTheValue('Beschreibung', Edit1.Text, 'Vorgabestring').Value;
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Property einer Klasse als Var-Parameter einer Procedure übergeben

  Alt 8. Mai 2017, 12:01
Edit.SetText hat intern ein if FValue = Value then Exit; .
Also wäre bei vielen Property eine zusätliche Prüfung sinnlos/doppelt.

Delphi-Quellcode:
function TTestForm.AssignTheValue(aDescription:string; aString1: String; aString2: String): tCheckString;
const
  CompareOperator: array[TValueRelationship] of string = ('<', '=', '>');
begin
  Result.Error := CompareValue(aString1, aString2);
  Result.Value := aString2; //IfThen({aString1 = aString2} Result.Error=EqualsValue, aString1, aString2);
  WriteToLog(Format('%s: %s %s %s', [aDescription, aString1, CompareOperator[Result.Error], aString2]));
end;
Error?
Sieht eher wie ein "State" (Status) aus.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 8. Mai 2017 um 12:19 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: Property einer Klasse als Var-Parameter einer Procedure übergeben

  Alt 8. Mai 2017, 12:12
@himitsu
Naja, in der Aufgabenstellung war halt ein Integer als Rückgabewert der Funktion vorgegeben.

Was genau damit zu passieren hat, weiß ich nicht, könnte also eine Errorcode sein.

Im Beispiel würde ein Status stimmen. Wenn man nur auf gleich - ungleich prüft, könnte man auch Boolean nehmen.

War halt nur 'ne Idee, um irgendwie um das Problem rumzukommen.

Die genaue Ausgestaltung der Funktion dürfte dann von den tatsächlichen Gegebenheiten abhängen.

@Uwe Raabe
Naklar, wenn man den in der Vorgabe genannten Rückgabewert nicht braucht, dann reicht ein String aus.
Dann hätte man in der Vorgabe aber auch ursprünglich eine Prozedure verwenden können.

Bin bei meiner Idee halt mal davon ausgegangen, dass der Rückgabewert der Funktion einen Bedeutung hat und habe ihn halt beibehalten.

Bei meiner Version hat man halt die Option offen, ob man, mit oder ohne Auswertung eines Rückgabewerte, eine Zeichenfolge zuweisen möchte.

Wir sehen jedenfalls: Es scheint eine Reihe von Möglichkeiten für die Lösung der Aufgabenstellung zu geben.
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.307 Beiträge
 
Delphi 12 Athens
 
#4

AW: Property einer Klasse als Var-Parameter einer Procedure übergeben

  Alt 8. Mai 2017, 12:26
Danke für eure Antworten.

Die RTTI-Lösung habe ich nun fertig und läuft. Den Rückgabe Wert brauche ich (manchmal), daher kann ich nicht einfach einen String zurückgeben. Wäre aber sonst natürlich auch eine Lösung
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.676 Beiträge
 
Delphi 12 Athens
 
#5

AW: Property einer Klasse als Var-Parameter einer Procedure übergeben

  Alt 8. Mai 2017, 12:03
Delphi-Quellcode:
  // Oder so, wenn im Quelltext keine Auswertung von Error notwendig sein sollte.
  Edit1.Text := AssignTheValue('Beschreibung', Edit1.Text, 'Vorgabestring').Value;
Wenn keine Auswertung des Integer-Results notwendig ist, kann man auch gleich den String zurückgeben.

function TTestForm.AssignTheValue(const aDescription, aString1, aString2: String): String;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:12 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-2025 by Thomas Breitkreuz