AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

allgemeine Frage zur Delphi-Syntax

Ein Thema von Windwalker · begonnen am 19. Mai 2009 · letzter Beitrag vom 19. Mai 2009
Antwort Antwort
Windwalker

Registriert seit: 9. Mär 2009
72 Beiträge
 
#1

allgemeine Frage zur Delphi-Syntax

  Alt 19. Mai 2009, 10:54
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!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: allgemeine Frage zur Delphi-Syntax

  Alt 19. Mai 2009, 10:56
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
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: allgemeine Frage zur Delphi-Syntax

  Alt 19. Mai 2009, 11:01
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: allgemeine Frage zur Delphi-Syntax

  Alt 19. Mai 2009, 11:01
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

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
Heiko
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: allgemeine Frage zur Delphi-Syntax

  Alt 19. Mai 2009, 11:05
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
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: allgemeine Frage zur Delphi-Syntax

  Alt 19. Mai 2009, 12:09
Und was ich mit ReadString lese, kann ich sowieso nicht auf true prüfen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: allgemeine Frage zur Delphi-Syntax

  Alt 19. Mai 2009, 12:15
Hallo,

jaja

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


Heiko
Heiko
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: allgemeine Frage zur Delphi-Syntax

  Alt 19. Mai 2009, 12:22
Der TE will ja auch überprüfen, ob das ReadString funktioniert hat.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: allgemeine Frage zur Delphi-Syntax

  Alt 19. Mai 2009, 12:24
Naja, solange die Ini vorhanden und lesbar ist, funktioniert ReadString immer. Zur Not wird der Standardwert zurückgegeben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: allgemeine Frage zur Delphi-Syntax

  Alt 19. Mai 2009, 12:36
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 ...
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 06:01 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