Announcement

Collapse
No announcement yet.

VAL und der Hinweis...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • VAL und der Hinweis...

    <PRE>
    Ich habe ein nun wirklich kleines Problem.
    <BR>
    Folgende Funktion :
    <BR>
    function IsInt ( sText : String ) : Boolean;
    var iTmp : Real;
    iCode : Integer;
    begin
    sText := StringReplace(sText, ',', '.', [rfReplaceAll, rfIgnoreCase]);
    Result := False;
    try
    Val( sText, iTmp, iCode );
    Result := iCode = 0;
    except
    end;
    end;
    <BR>
    Ich bekommen vom Compiler immer den Hinweis :
    Auf 'iTmp' zugewiesener Wert wird niemals benutzt -> Val( sText, iTmp, iCode )
    <BR>
    Wie kann ich dem Abhilfe schaffen ?
    Danke im vorraus...
    </PRE>

  • #2
    Hallo Sascha,

    schau doch 'mal in der Hilfe nach, da ist sogar ein Beispiel.
    So, wie es der Compiler sagt: Deine Variable "iTmp" wird von Dir nicht benutzt (und in der Prozedur wird iTmP aber etwas zugewiesen).

    Grüsse Pete

    Comment


    • #3
      Hallo Sascha,
      <br>ich glaube, den Hinweis bekommst du nur weg, wenn
      du statt Val ne andere Routine nimmst - TryStrToInt
      oder so. Und wozu brauchst du dieses try-except?
      <br>Uli

      Comment


      • #4
        Du meinst TryStrToFloat. Sascha testet ja ob die Zahl ein gültiger Gleitkommawert ist. Die Funktion heißt nur dummerweise IsInt. Und auch bei den TryStrToIrgendwas Funktionen gibt es immer einen Rückgabewert mit dem Wert den Sascha nicht braucht. Die Warnung wäre also immer noch vorhanden.

        Wenn man nicht davor zurückschreckt Exceptions auch in nicht Ausnahmefällen zu benutzen dann würde ich einfach versuchen umzuwandeln und dann die Exception auswerten.

        <PRE>
        try
        StrToFloat(sText)
        Result := Try;
        except
        Result := False;
        end;
        </PRE>

        Ral

        Comment


        • #5
          <i>Die Warnung wäre also immer noch vorhanden.</i><br>
          Möglich - Versuch macht kluch. Ich hab hier noch D5, drum kann ich es nicht selbst ausprobieren, da D5 die Try...-Funktionen noch nicht hat.
          <p>Meine Lösung bestünde darin, eine Kommentar zu der Warnung neben den Val-Aufruf zu stellen und es dann gut sein zu lassen - kommet ja nur an einer, zentralisierten Stelle vor.
          <p>
          Uli

          Comment


          • #6
            da D5 die Try...-Funktionen noch nicht hat.
            Ähem, wirklich nicht ?

            Comment


            • #7
              Ich dächte auch, dass die Funktionen erst in D6 zur Verfügung stehen, allerdings ist deren Code kein Hexenwerk:<p>
              <pre>function StrToFloatDef(const S: string; const Default: Extended): Extended;
              begin
              if not TextToFloat(PChar(S), Result, fvExtended) then
              Result := Default;
              end;

              function TryStrToFloat(const S: string; out Value: Extended): Boolean;
              begin
              Result := TextToFloat(PChar(S), Value, fvExtended);
              end;</pre><p>
              Schöne Grüße, Mario Noac
              Schöne Grüße, Mario

              Comment

              Working...
              X