Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Delphi2010 und Str() ergibt "W1057 Implizite String-Umwandlung" (https://www.delphipraxis.net/154697-delphi2010-und-str-ergibt-w1057-implizite-string-umwandlung.html)

Bernhard Hartl 21. Sep 2010 16:36

Delphi-Version: 2010

Delphi2010 und Str() ergibt "W1057 Implizite String-Umwandlung"
 
Wenn ich folgende Funktion in Delphi 2010 compiliere, generiert der Compiler die Meldung
[DCC Warnung] Unit1.pas(33): W1057 Implizite String-Umwandlung von 'ShortString' zu 'string'

Was kann ich tun???
Code:
function MakeItAString(const ANumber:Integer): String;
begin
  Str(ANumber, Result);
end;
Danke Bernhard

shmia 21. Sep 2010 16:42

AW: Delphi2010 und Str() ergibt "W1057 Implizite String-Umwandlung"
 
Die procedure Str() stammt noch aus der Pascal Steinzeit.
Verwende einfach die Funktion IntToStr() und werfe deine function MakeItAString() in die Tonne.

Bernhard Hartl 21. Sep 2010 16:50

AW: Delphi2010 und Str() ergibt "W1057 Implizite String-Umwandlung"
 
Danke

Die Finktion MakeItAString hab ich eben aus der Onlinehilfe von D2010 heraus kopiert
dort unter "Str()-Codebeispiel" zu finden

ms-help://embarcadero.rs2010/codesamples/SystemStr_(Delphi).html

Str() verwende ich schon seit TurboPascal 5
schade dass nun diese sehr flexible gute alte Funktion weichen muss...

Bernhard

himitsu 21. Sep 2010 16:59

AW: Delphi2010 und Str() ergibt "W1057 Implizite String-Umwandlung"
 
Delphi-Referenz durchsuchenVal und Delphi-Referenz durchsuchenStr sind noch alte ANSI-Funktionen, genauso wie die Dateifunktionen um AssignFile herum,
welche bei der Unicodeumstellung in Delphi 2009 nicht angefaßt wurden und demnach weiterhin nur ANSI verstehen.

Allerdings macht das bei Val und Str eigentlich kein Problem, da diese Zahlen weiterhin vollständig in ANSI konvertierbar sind.
Man könnte hier also diese Meldung einfach ignorieren oder deaktivieren.

Bernhard Geyer 21. Sep 2010 17:20

AW: Delphi2010 und Str() ergibt "W1057 Implizite String-Umwandlung"
 
Zitat:

Zitat von himitsu (Beitrag 1051038)
Allerdings macht das bei Val und Str eigentlich kein Problem, da diese Zahlen weiterhin vollständig in ANSI konvertierbar sind.

[Halb-OT]Aber nur wenn du nicht die Zahlen in arabischer Schreibweise -> Arabic Indic Digits haben willst :-)[/Halb-OT]

himitsu 21. Sep 2010 18:12

AW: Delphi2010 und Str() ergibt "W1057 Implizite String-Umwandlung"
 
Es muß nichtmal arabisch sein, unsere lateinischen Zahlen gibt's auch mehrfahr ... es gibt extra Zeichen für Fett und Kurziv, damit man dieses auch ohne Umstellen der Schriftart darstellen kann (können sollte, aber nicht alle Fonts kennen schon diese UCS4-Zeichen)

Nja, aber alle Int<>Str-Funktionen kennen eh nur die einfachen lateinischen Zeichen.

implementation 21. Sep 2010 18:27

AW: Delphi2010 und Str() ergibt "W1057 Implizite String-Umwandlung"
 
Lateinische Zahlen sind I, II, III, IV usw.
Ich glaube du verwechselst hier etwas.
Wir benutzen zwar das lateinische Alphabet, aber arabische Zahlen :wink:

himitsu 21. Sep 2010 18:41

AW: Delphi2010 und Str() ergibt "W1057 Implizite String-Umwandlung"
 
Ach stimmt ja und der Bruder is vom Klemptner.

USchuster 21. Sep 2010 19:31

AW: Delphi2010 und Str() ergibt "W1057 Implizite String-Umwandlung"
 
Wer nicht zugunsten von IntToStr bzw. Format* auf Str verzichten kann und trotzdem weiterhin W1057 Warnungen an anderen Stellen bekommen möchte der könnte die Warnungen an-/ausschalten. (Nachteil: Es ist nicht möglich die Warnungen nur wieder einzuschalten, wenn diese auch in den Projektoptionen aktiviert sind.)

Delphi-Quellcode:
function MakeItAString(const ANumber:Integer): String;
begin
  {$WARNINGS OFF}
  Str(ANumber, Result);
  {$WARNINGS ON}
end;
Man kann natürlich auch für folgenden QC Report voten und bei genug Votes wird das vielleicht irgendwann mal gefixed.

Report No: 83051 (RAID: 263452) Status: Open
The "Str" procedure is incorrectly implemented in the "System"unit
http://qc.embarcadero.com/wc/qcmain.aspx?d=83051

Bernhard Geyer 21. Sep 2010 19:48

AW: Delphi2010 und Str() ergibt "W1057 Implizite String-Umwandlung"
 
Zitat:

Zitat von implementation (Beitrag 1051065)
Wir benutzen zwar das lateinische Alphabet, aber arabische Zahlen :wink:

Arabische Zahlen aber latainische Schreibweise :-)

٠١٢٣٤٥٦٧٨٩ = 0123456789

Wobei hier bei Zahlen ja noch unserer Schreibweise von links nach rechts verwendet wird, im gegensatz zum "normalen" Text :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:02 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