Hallo Wissende,
ich bin ein wenig am verzweifeln
. Da ich mir einen neuen Rechner zugelegt habe und dabei von XP auf Win 8.1 gewechselt bin, dachte ich mir, das ich auch mal mein Delphi modernisieren könnte. Für meine Hobby-Anwendungen kam dabei nur die Starter-Version in Frage.
Zumindest von der Oberfläche ist kein so großer Unterschied fest zustellen.
Aber: Der Teufel steckt im Detail. Das ich alle "String" und "Char" usw. in "AnsiString" und "AnsiChar" umwandeln muss, daran habe ich mich schon gewöhnt - obwohl ein genereller Schalter "Use Turbo-Modus" auch nicht schlecht wäre.
Jetzt aber zu meinem eigentlichen Problem:
Sehr oft kommen jetzt folgende Warnungen:
Delphi-Quellcode:
[dcc32 Warnung] HTDB.pas(218): W1000 Symbol '
StrComp' ist veraltet: '
Moved to the AnsiStrings unit'
[dcc32 Warnung] HTDB.pas(358): W1000 Symbol '
StrLen' ist veraltet: '
Moved to the AnsiStrings unit'
[dcc32 Warnung] HTDB.pas(359): W1000 Symbol '
StrCopy' ist veraltet: '
Moved to the AnsiStrings unit'
So weit, so gut, dann habe ich halt bei den "Uses" "AnsiStrings" zugefügt. Jetzt aber wurde aus den Warnungen Fehler
Delphi-Quellcode:
[dcc32 Fehler] HTDB.pas(359): E2251 Doppeldeutiger überladener Aufruf von 'StrCopy'
System.AnsiStrings.pas(3248): Verwandte Methode: function StrCopy(PAnsiChar; const PAnsiChar): PAnsiChar;
System.SysUtils.pas(10888): Verwandte Methode: function StrCopy(PAnsiChar; const PAnsiChar): PAnsiChar;
Was ich nicht verstehe: Warum deklariert man zweimal die gleiche Funktion, lässt aber den Compiler drüber stolpern?
Wie komme ich aus diesem Dilemma? Ich könnte natürlich die
Unit "AnsiString" wieder entfernen und die Compiler-Direktive {$WARN} setzen, aber sehr wohl ist mir dabei auch nicht.
Gibt es eine einfache Methode für Anfänger, den ganzen Schlamassel zu umgehen?