Difference between revisions of "sVarstringchecks/de"

From Free Pascal wiki
Jump to navigationJump to search
(Created page with "{{sVarstringchecks}} <br> Zurück zu den lokalen Compiler Direktiven.<br> <br> ==$VARSTRINGCHECKS und $V== Die Compiler Direktiven $VARSTRINGC...")
 
m
Line 32: Line 32:
 
Die Fehlermeldung kommt daher, das beide Strings zwar vom Datentyp shortstring sind, aber eine unterschiedliche Länge haben.<br>
 
Die Fehlermeldung kommt daher, das beide Strings zwar vom Datentyp shortstring sind, aber eine unterschiedliche Länge haben.<br>
 
<br>
 
<br>
<br>
 
In der Standardeinstellung übergibt der Adressoperator einen untypisierten Pointer.<br>
 
 
<br>
 
<br>
 
Beispiel für ein fehlerfreies compilieren:
 
Beispiel für ein fehlerfreies compilieren:

Revision as of 12:18, 27 January 2013

Deutsch (de)
Zurück zu den lokalen Compiler Direktiven.

$VARSTRINGCHECKS und $V

Die Compiler Direktiven $VARSTRINGCHECKS und $V sind in Ihrer Verwendung Synonym.
Die Compiler Direktive $VARSTRINGCHECKS, legt fest, wie streng der Compiler bei der Prüfung von Zuweisungen von Datentypen vom Typ String ist.
Die Compiler Direktive $V kennt zwei Schalter + und -.
Die Compiler Direktive $VARSTRINGCHECKS kennt zwei Schalter ON und OFF.


Beispiel für einen Fehler:

{$V+} // Schaltet die strenge Zuweisungskontrolle ein

procedure subTest(var strUebergabe: shortString);
begin
    showmessage(strUebergabe);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  strWert : String[12];
begin
    strWert:='123456789012';
    subTest(strWert);
end;

Das obige Beispiel erzeugt folgende Fehlermeldung:
unit1.pas(45,20) Error: String types have to match exactly in $V+ mode

Die Fehlermeldung kommt daher, das beide Strings zwar vom Datentyp shortstring sind, aber eine unterschiedliche Länge haben.


Beispiel für ein fehlerfreies compilieren:

{$V-} //Schaltet die strenge Zuweisungskontrolle aus

procedure subTest(var strUebergabe: shortString);
begin
    showmessage(strUebergabe);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  strWert : String[12];
begin
    strWert:='123456789012';
    subTest(strWert);
end;



--Olaf 10:17, 27 January 2013 (UTC)