Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi allgemeine Frage zur Delphi-Syntax (https://www.delphipraxis.net/134285-allgemeine-frage-zur-delphi-syntax.html)

Windwalker 19. Mai 2009 10:54


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:
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
Danke für die Hilfe!

mkinzler 19. Mai 2009 10:56

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

himitsu 19. Mai 2009 11:01

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

hoika 19. Mai 2009 11:01

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:
function Read_a: String;
begin
  a:= Ini.ReadSring ...
  Result:= a;
end;
Dann kann folgendes benutzen

Delphi-Quellcode:
if Read_a then
Ich persönlich finde den Code grauenhaft ... ;)

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

quendolineDD 19. Mai 2009 11:05

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 ;-)

DeddyH 19. Mai 2009 12:09

Re: allgemeine Frage zur Delphi-Syntax
 
Und was ich mit ReadString lese, kann ich sowieso nicht auf true prüfen ;)

hoika 19. Mai 2009 12:15

Re: allgemeine Frage zur Delphi-Syntax
 
Hallo,

jaja ;)

Delphi-Quellcode:
if Read_a='huhu hoika' then
begin
end;


Heiko

quendolineDD 19. Mai 2009 12:22

Re: allgemeine Frage zur Delphi-Syntax
 
Der TE will ja auch überprüfen, ob das ReadString funktioniert hat.

DeddyH 19. Mai 2009 12:24

Re: allgemeine Frage zur Delphi-Syntax
 
Naja, solange die Ini vorhanden und lesbar ist, funktioniert ReadString immer. Zur Not wird der Standardwert zurückgegeben.

himitsu 19. Mai 2009 12:36

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 07:48 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