AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Umstellung D7 -> XE4

Ein Thema von Thomas Feichtner · begonnen am 26. Jul 2013 · letzter Beitrag vom 26. Jul 2013
Antwort Antwort
Thomas Feichtner

Registriert seit: 30. Nov 2007
Ort: Rum
137 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Umstellung D7 -> XE4

  Alt 26. Jul 2013, 08:20
Die Warnung
Implizite String-Umwandlung mit potenziellem Datenverlust von ..
bekomme ich in dieser Zeile:

Delphi-Quellcode:
 
end else if Value[I] = [ThousandSeparator] then begin
mfg

Thomas Feichtner
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.222 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Umstellung D7 -> XE4

  Alt 26. Jul 2013, 08:32
Die Warnung
Implizite String-Umwandlung mit potenziellem Datenverlust von ..
bekomme ich in dieser Zeile:

Delphi-Quellcode:
 
end else if Value[I] = [ThousandSeparator] then begin
Hierzu gibts die neue Hilfsfunktion CharInSet.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#3

AW: Umstellung D7 -> XE4

  Alt 26. Jul 2013, 09:16
Die Warnung
Implizite String-Umwandlung mit potenziellem Datenverlust von ..
bekomme ich in dieser Zeile:

Delphi-Quellcode:
 
end else if Value[I] = [ThousandSeparator] then begin
Was willst du denn mit den eckigen Klammern erreichen? Das sollt doch eigentlich ein Vergleich zweier Char sein und nicht eines Char mit einem Set, oder?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Thomas Feichtner

Registriert seit: 30. Nov 2007
Ort: Rum
137 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Umstellung D7 -> XE4

  Alt 26. Jul 2013, 09:30
Was willst du denn mit den eckigen Klammern erreichen? Das sollt doch eigentlich ein Vergleich zweier Char sein und nicht eines Char mit einem Set, oder?
Hallo Uwe,

da hast du schon recht. Ich habe den Source auch nur übernommen und versuche in auf XE4 zu hieven.
Die eckigen Klammern habe ich schon enfernt.

Aber warum bekomme ich diese Meldung?
mfg

Thomas Feichtner
  Mit Zitat antworten Zitat
EgonHugeist

Registriert seit: 17. Sep 2011
187 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

AW: Umstellung D7 -> XE4

  Alt 26. Jul 2013, 09:50
function ScanNumber(Value, FormatChars: String; var I: Integer): Boolean;
begin
Result := True;
I := I + 1;
while (Result = True) and (I <= Length(Value)) do
if CharInSet(Value[I], ['0'..'9']) then
Inc(I)
else if Value[I] = FormatSettings.ThousandSeparator then
Inc(i)
else if (Pos(Value[I], FormatChars) <> 0) then
Inc(i)
else if Value[I] = FormatSettings.DecimalSeparator then
Result := ScanDecimal(Value, FormatChars, I)
else Result := False;
end;
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.196 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Umstellung D7 -> XE4

  Alt 26. Jul 2013, 09:56
Wenn schon XE4, warum dann nicht die coolen intrinsischen Record-Helper?

Statt

if CharInSet(Value[I], ['0'..'9']) then einfach
if Value[i].isNumber() then ?


Ich liebe die Dinger.

CharInSet hat eine überladene Methode mit AnsiChars als Parameter, wahrscheinlich castet er nach AnsiChar runter weil es die erste Methode ist, die passt?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#7

AW: Umstellung D7 -> XE4

  Alt 26. Jul 2013, 10:10
Aber warum bekomme ich diese Meldung?
Da ein Set of Char wegen der Beschränkungen für Sets implizit ein Set of AnsiChar ist, wird für das Bilden des Sets aus ThousandSeparator zunächst eine Umwandlung durchgeführt. Danach stellt der Compiler dann fest, daß man ein Char nicht mit einem Set vergleichen kann (Inkompatible Typen).
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:36 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