AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language W 1057 Implizite String-Umwandlung Ansistring zu string
Thema durchsuchen
Ansicht
Themen-Optionen

W 1057 Implizite String-Umwandlung Ansistring zu string

Ein Thema von hanspeter · begonnen am 1. Apr 2011 · letzter Beitrag vom 15. Mai 2011
Antwort Antwort
Seite 1 von 2  1 2      
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#1

W 1057 Implizite String-Umwandlung Ansistring zu string

  Alt 1. Apr 2011, 09:42
Delphi-Version: XE
Hallo,

ich stelle gerade ein Projekt von D5 auf XE um.
Im rs232 Bereich muss ich hier mit Ansi-Strings arbeiten.

Delphi-Quellcode:
s : Ansistring;
s := '12';
d := HexToByte(s);
Hextobyte braucht einen Stringparameter, also kommt die o.g. Warnung.
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
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: W 1057 Implizite String-Umwandlung Ansistring zu string

  Alt 1. Apr 2011, 10:02
Hallo Peter,

ich kenne die Funktion HexToByte nicht. Gibt es hierfür vielleicht eine alternative? Wie ist d deklariert?

Delphi-Quellcode:
{$WARNINGS OFF} 
//hier kommt keine Warnung mehr
{$WARNINGS ON}
Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
Benutzerbild von GPRSNerd
GPRSNerd

Registriert seit: 30. Dez 2004
Ort: Ruhrpott
239 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: W 1057 Implizite String-Umwandlung Ansistring zu string

  Alt 1. Apr 2011, 10:36
Versuch es mal mit einem expliziten Typecast auf String:

d := HexToByte(string(s));
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: W 1057 Implizite String-Umwandlung Ansistring zu string

  Alt 1. Apr 2011, 10:53
Entweder du nutzt ein HexToByte, welches AnsiStrings als Parameter nutzt,
du castest es manuell d := AnsiString(HexToByte(String(s))); (genaueres können wir nicht sagen, da uns die Definition von HexToByte vorenthalten wurde)
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.
$2B or not $2B
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#5

AW: W 1057 Implizite String-Umwandlung Ansistring zu string

  Alt 1. Apr 2011, 11:48
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
  Mit Zitat antworten Zitat
Benutzerbild von GPRSNerd
GPRSNerd

Registriert seit: 30. Dez 2004
Ort: Ruhrpott
239 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: W 1057 Implizite String-Umwandlung Ansistring zu string

  Alt 1. Apr 2011, 11:57
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.
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: W 1057 Implizite String-Umwandlung Ansistring zu string

  Alt 1. Apr 2011, 12:01
Hallo Peter,
Habt Ihr meine Frage eigentlich bis zum Ende gelesen?
Ich habe mich bemüht
Hextobyte braucht einen Stringparameter, also kommt die o.g. Warnung.
Ziel von mir war es zu erfahren, ob man statt der Funktion eine andere verwenden kann, die ANSISTRINGS akzeptiert
damit:
Da es an dieser Stelle ungefährlich ist (?) kann ich statt Hextobyte(string(s)) auch die Warnung abschalten oder habe ich dann einen Nebeneffekt?
Durch suche einer Ansi-Funktion, die es ermöglicht Dein Ziel zu erreichen, ergeben sich alle Deine Fragen als gegenstandslos. Ich dachte, dass dies Dein Problem löst.
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
Das ist in meinen Augen eine andere Frage, dazu kann ich leider nicht viel sagen außer, dass ich versuchen würde immer Funktionen zu verwenden, bei dehnen das nicht nötig ist - also die ANSI-Varianten - solange du dich im ANSI-Bereich bewegst. Gibt es die Varianten nicht, würde ich selber versuchen es ab zu schätzten ob der Typecast gefährlich ist. Dass kannst aber nur Du entscheiden, da nur du die Interna Deines Programms kennst.

Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#8

AW: W 1057 Implizite String-Umwandlung Ansistring zu string

  Alt 1. Apr 2011, 13:12
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

AW: W 1057 Implizite String-Umwandlung Ansistring zu string

  Alt 1. Apr 2011, 13:24
Zitat:
da Unicode und Ascii Code in den ersten 128 oder 255 Byte gleich ist.
ersten 128 Zeichen (#0..#127)
die letzen 128 Zeichen (#128..#255) werden je nach ensprechender Codepage umkodiert.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von ChrisE
ChrisE

Registriert seit: 15. Feb 2006
Ort: Hechingen
504 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: W 1057 Implizite String-Umwandlung Ansistring zu string

  Alt 4. Apr 2011, 08:12
OT:
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.


Man, dass kannte ich noch gar nicht. THX - wieder was dazu gelernt

Gruß, Chris
Christian E.
Es gibt 10 Arten von Menschen, die die Binär lesen können und die die es nicht können

Delphi programming rules
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz