![]() |
Delphi-Version: XE
W 1057 Implizite String-Umwandlung Ansistring zu string
Hallo,
ich stelle gerade ein Projekt von D5 auf XE um. Im rs232 Bereich muss ich hier mit Ansi-Strings arbeiten.
Delphi-Quellcode:
Hextobyte braucht einen Stringparameter, also kommt die o.g. Warnung.
s : Ansistring;
s := '12'; d := HexToByte(s); Da es an dieser Stelle ungefährlich ist (?) kann ich statt Hextobyte(string(s)) auch die Warnung abschalten oder habe ich dann einen Nebeneffekt? Und wo zum Teufel finde ich in der Hilfe eine Zusammenstellung der Compilerschalter um diese Warnung abzuschalten? Gruß Peter |
AW: W 1057 Implizite String-Umwandlung Ansistring zu string
Hallo Peter,
ich kenne die Funktion
Delphi-Quellcode:
nicht. Gibt es hierfür vielleicht eine alternative? Wie ist
HexToByte
Delphi-Quellcode:
deklariert?
d
Delphi-Quellcode:
Gruß, Chris
{$WARNINGS OFF}
//hier kommt keine Warnung mehr {$WARNINGS ON} |
AW: W 1057 Implizite String-Umwandlung Ansistring zu string
Versuch es mal mit einem expliziten Typecast auf String:
Delphi-Quellcode:
d := HexToByte(string(s));
|
AW: W 1057 Implizite String-Umwandlung Ansistring zu string
Entweder du nutzt ein HexToByte, welches AnsiStrings als Parameter nutzt,
du castest es manuell
Delphi-Quellcode:
(genaueres können wir nicht sagen, da uns die Definition von HexToByte vorenthalten wurde)
d := AnsiString(HexToByte(String(s)));
oder eben einfach ignorieren. In diesem Fall wird ja so oder zo umgewandelt, entweder automatisch durch Delphi (wobei dieses eine Warnung ausgibt) oder man castes es manuell, ohne eine Warnung zu erhalten. Solange nur ASCII-Zeichen (#0..#127) im String sind, gibt es absolut keine Probleme, bei ANSI (#0..#255) sollte es hier auch nahezu problemlos laufen, da es ja nach Unicode und gleich wieder zurück umgewandelt wird. |
AW: W 1057 Implizite String-Umwandlung Ansistring zu string
Habt Ihr meine Frage eigentlich bis zum Ende gelesen?
Wie ein Typecast funktioniert habe ich bereits beschrieben. Und für Hextobyte kann man eine beliebige andere Funktion mit einem String-Parameter verwenden. Meine Frage ist ob ein Typecast string(s) an vielen Stellen im Programm erfolgen sollte oder ob ein explizites Ausschalten dieser Warnung ausreichend ist, da ein impliziter Typecast an dieser Stelle keine Nebenwirkung haben sollte. $Warn on/of ist nicht die Lösung. Ich suche in der Hilfe den Schalter um nur die Warnung W1057 ausschalten zu können. Gruß Peter |
AW: W 1057 Implizite String-Umwandlung Ansistring zu string
Da du trotz Nachfrage die Deklaration von d und HexToByte nicht offenlegst, ist alles nur hellsehen wegen der Nebeneffekte...
In den Projektoptionen gibts mehrere Schalter "Implizite/Explizite String-Umwandlung (mit potentiellen Datenverlusten)" unter den Compilereinstellungen für Warnungen wegen der Stringcasts. |
AW: W 1057 Implizite String-Umwandlung Ansistring zu string
Hallo Peter,
Zitat:
Zitat:
damit: Zitat:
Zitat:
Gruß, Chris |
AW: W 1057 Implizite String-Umwandlung Ansistring zu string
Vielen Dank für die tatkräftige und konstruktive Unterstützung.
Ich bin zwischenzeitlich fündig geworden. Was ich gesucht habe ist die Compilerdirective {$WARN EXPLICIT_STRING_CAST OFF} Was in XE noch funktioniert strg + O + O , dann werden die eingestellten Direktiven in den Quellcode übernommen und man kommt so an undokumentierte Schalter ran. Und nein bei deinem impliziten Typcast von Ansistring auf string kommt es nicht zu Problemen, da Unicode und Ascii Code in den ersten 128 oder 255 Byte gleich ist. Peter |
AW: W 1057 Implizite String-Umwandlung Ansistring zu string
Zitat:
die letzen 128 Zeichen (#128..#255) werden je nach ensprechender Codepage umkodiert. |
AW: W 1057 Implizite String-Umwandlung Ansistring zu string
OT:
Zitat:
Man, dass kannte ich noch gar nicht. THX - wieder was dazu gelernt :-) Gruß, Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:52 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