![]() |
Fehlermeldung
Hallo,
ich bekomme immer eine Fehlermeldung beim Copilieren. (dcc32 WarnungJ Svw.dpr(114): W10571mphzlte String-Umwandlung von 'ShortStnng' zu 'string' Und zwar kommt die Meldung zu folgendem Code: If fileexists(schliessen.Bild_pfad) then Die Variable "schlessen.Bild_pfad" ist in einem Record wie folgt angelegt: Bild_pfad:string[255]; Meine Frage lautet: Wie kann man diese Fehlermeldung vermeiden. Allerdings läuft das Programm auch mit dieser Fehlermeldung. Gruss Oldmann |
AW: Fehlermeldung
Hast Du schon mal versucht den ShortString
Delphi-Quellcode:
als string zu erklären?
Bild_pfad:string[255]
Dann sollte diese Warnung nicht mehr erscheinen. |
AW: Fehlermeldung
Einfach nach String casten, in der Richtung sollte das ja komplett ungefährlich sein.
Delphi-Quellcode:
if FileExists(string(DeinPfad)) then…
|
AW: Fehlermeldung
Das ist keine Fehlermeldung sondern eine Warnmeldung.
Hintergrund ist, dass string[länge] ein sog. Short String ist, der keine Unicode-Zeichen speichern kann. Der Typ string ist bei Delphi seit Version 2009 ein Unicode String. Beheben kann man das auf zwei Weisen: 1. Wenn Du sicher bist, dass Du keine Unicode-Zeichen in diesem String verwendest (wobei: Bei Dateienamen ist das nicht sicher), kannst Du einfach einen Typecast verwenden:
Delphi-Quellcode:
SomeUnicodeString := String(SomeShortString);
2. Wenn das nicht sicher ist, dann solltest Du den Short String im Record als normalen String deklarieren. Dann ist die Meldung weg. Allerdings hängt es davon ab, woher der Record kommt und was damit sonst noch gemacht wird, ob das so einfach geht. Wenn er z.B. in einer Datei als File of Record gespeichert ist, geht das nicht. |
AW: Fehlermeldung
oder abschalten
Delphi-Quellcode:
{$WARN IMPLICIT_STRING_CAST OFF}
oder alles aus ... halt nee, besser nicht
Delphi-Quellcode:
{$WARNINGS OFF}
![]() ![]() ![]() Warum ist diese Warnung eigentlich standardmäßig aktiv? Und wenn, warum ist sie nicht einfach nur ein "Hinweis"? ANSI zu Unicode = W1057 IMPLICIT_STRING_CAST (nicht wirklich schlimm ... nur etwas langsamer) Unicode zu ANSI = W1058 IMPLICIT_STRING_CAST_LOSS (hier können Infos verloren gehn) PS: Oben ein
Delphi-Quellcode:
rein
{$WARN EXPLICIT_STRING_CAST ON}
und schon ist es egal, ob
Delphi-Quellcode:
oder
U := A;
Delphi-Quellcode:
... wirft nun Beides eine Warnung :lol:
U := String(A);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:59 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