![]() |
allgemeine Frage zur Delphi-Syntax
Hallo!
Da ich bisher viel in Java programmiert habe, kommen mir bei der Arbeit mit Delphi immer mal wieder Ideen zur Umsetzung, wobei ich unsicher bin, ob das in Delphi funktioniert. Gerade im Moment frage ich mich, ob es möglich ist, in der If-Clause eine Zuweisung zu tätigen. Im Beispiel möchte ich einen Wert aus einer Ini-Datei auslesen und gleichzeitig überprüfen:
Delphi-Quellcode:
Danke für die Hilfe!
if (a := ini.ReadString( ... )) = true then
log('Wert gesetzt'); (* im späteren Verlauf möchte ich auf a noch zugreifen können *) ... if a then begin ... end |
Re: allgemeine Frage zur Delphi-Syntax
Delphi-Quellcode:
a := ini.ReadString( ... ));
if a then log('Wert gesetzt'); (* im späteren Verlauf möchte ich auf a noch zugreifen können *) ... if a then begin ... end |
Re: allgemeine Frage zur Delphi-Syntax
Solche Variablenzuweisungen innerhalb von Abfragen sind in Delphi nicht möglich.
Und wenn dann nur über Umwege, z.B. mit einer kleinen SetterFunktion z.B.:
Delphi-Quellcode:
Function SetBool(Var B: Boolean; Condition: Boolean): Boolean; Inline;
// Inline; entfernen, wenn es der Compiler noch nicht kennt Begin B := Condition; Result := Condition; End; if SetBool(a, ini.ReadString( ... )) then log('Wert gesetzt'); (* im späteren Verlauf möchte ich auf a noch zugreifen können *) ... if a then begin ... end |
Re: allgemeine Frage zur Delphi-Syntax
Halo,
nein geht so nicht. In Java geht das ?, Kannte ich nur von C her . Lösung
Delphi-Quellcode:
Dann kann folgendes benutzen
function Read_a: String;
begin a:= Ini.ReadSring ... Result:= a; end;
Delphi-Quellcode:
Ich persönlich finde den Code grauenhaft ... ;)
if Read_a then
Was ist bei Erweiterungen, wo das if Read_a nicht mehr aufgerufen wird ? (viell. ein zusätzliches if) Den Fehler dann zu finden, ist schwierig. Notwendig ist sowas nicht, finde ich. Heiko |
Re: allgemeine Frage zur Delphi-Syntax
Und gleich noch eine Anmerkung, das eine Überprüfung auf = true eklatante Folgen haben kann. Gerade beim Arbeiten mit der Win32API.
Und die Funktion sollte einen Boolean'schen Wert zurückliefern, ansonsten geht das so auch nicht ;-) |
Re: allgemeine Frage zur Delphi-Syntax
Und was ich mit ReadString lese, kann ich sowieso nicht auf true prüfen ;)
|
Re: allgemeine Frage zur Delphi-Syntax
Hallo,
jaja ;)
Delphi-Quellcode:
if Read_a='huhu hoika' then
begin end; Heiko |
Re: allgemeine Frage zur Delphi-Syntax
Der TE will ja auch überprüfen, ob das ReadString funktioniert hat.
|
Re: allgemeine Frage zur Delphi-Syntax
Naja, solange die Ini vorhanden und lesbar ist, funktioniert ReadString immer. Zur Not wird der Standardwert zurückgegeben.
|
Re: allgemeine Frage zur Delphi-Syntax
also am Einfachsten so: (für ErrorString etwas nehmen, was nie als wert in der INI drinsteht)
Delphi-Quellcode:
S := ini.ReadString(Section, Ident, ErrorString);
B := S <> ErrorString; if B then log('Wert gesetzt'); (* im späteren Verlauf möchte ich auf a noch zugreifen können *) if B then ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 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