AGB  ·  Datenschutz  ·  Impressum  







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

Val und zuweisung

Ein Thema von EWeiss · begonnen am 8. Mai 2017 · letzter Beitrag vom 12. Mai 2017
 
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#8

AW: Val und zuweisung

  Alt 12. Mai 2017, 00:06
Die Definition der Funktion Val() aus der Delphi-Doku: procedure Val(S; var V; var Code: Integer); Der Parameter "S", (sEnable bei dir) wird nicht als var-Parameter übergeben, und kann nachher nicht anders sein.

Zudem sehe ich noch ein Problem in deinem Code: Was machst du, wenn Errorpos <> 0 ist? Eigentlich müsste der Compiler warnen, dass EnableFlag undefiniert sein könnte. (Wenn wir hier den gesamten Code sehen.)

Delphi-Quellcode:
            sEnable := Trim(ParseThis(sBF, ',', 5));
            if Length(sEnable) = 0 then
              EnableFlag := 1 // Wenn Wert nicht gesetzt, 1 als Standard nehmen
            else
              VAL(sEnable, Int, Errorpos); // Wenn dennoch irgendwas im String ist, versuchen eine Zahl daraus zu lesen
            
            if Errorpos = 0 then
              EnableFlag := StrToInt(sEnable); // Wenn kein Fehler beim Interpretieren als Zahl war, umwandeln.
                                               // ABER! Unnötig. Die erkannte Zahl steht bereits in "Int" aus dem VAL()-Aufruf!
            // Vor allem aber: Was machst du, wenn Errorpos NICHT 0 ist, also KEINE Zahl erkannt wurde? Nichts! EnableFlag
            // wird nichts neues zugewiesen, es wird kein Fehler ausgelöst, nichts. Du machst einfach weiter unter der Annahme,
            // dass die Zahl richtig erkannt wurde. Was auch immer nachher in EnableFlag drin steht.
            //
            // Würde sEnable also in der ersten Zeile als '"2""' herauskommen, sollte Errorpos = 1 sein, und in EnableFlag steht
            // NUR DANN eine 2, wenn irgendwo vorher an einer anderen Stelle eine 2 rein geschrieben wurde. NUR dann. Step das mal durch.

            if EnableFlag = 2 then // RecycleBin
            begin
              sUseThumb := ExtractFilePath(sUseThumb);
              if SHGetRecycleBinCount > 0 then
              begin
                sUseThumb := sUseThumb + 'RecycleBinFull.png';
                gp.RecycleBinFull := true;
              end
              else
              begin
                sUseThumb := sUseThumb + 'RecycleBinEmpty.png';
                gp.RecycleBinFull := false;
              end;
            end;
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
 


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 18:29 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