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

Umstellung D7 -> XE4

  Alt 26. Jul 2013, 06:55
Hallo ich möchte gerne unser Projekt von D7 auf XE4 bringen.
Jedoch scheitere ich schon beim Installieren von einigen Komponenten bzw. von Funktionen die diese beinhalten.


Delphi-Quellcode:
function ScanNumber(Value, FormatChars: String; var I: Integer): Boolean;
begin
   Result := True;
   I := I + 1;
   while (Result = True) and (I <= Length(Value)) do begin
     if Value[I] in ['0'..'9'] then begin
        I := I + 1;
     end else if Value[I] = [ThousandSeparator] then begin
        I := I + 1;
     end else if Pos(Value[I], FormatChars) <> 0 then begin
        I := I + 1;
     end else if Value[I] in [DecimalSeparator] then begin
        Result := ScanDecimal(Value, FormatChars, I);
     end else begin
        Result := False;
     end;
   end;
end;
folgende Meldung bekomme ich:
d7-xe4.jpg

Die Unit SysUtils wäre definiert.

Und warum bekomme ich diese Meldung:
Implizite String-Umwandlung mit potenziellem Datenverlust von...
Welcher Teil ist String und welcher ShortString?


Ich seh derzeit den Wald vor lauter Bäume nicht...
mfg

Thomas Feichtner
  Mit Zitat antworten Zitat
Thomas Feichtner

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

AW: Umstellung D7 -> XE4

  Alt 26. Jul 2013, 07:13
1. Fehler habe ich selbe gefunden
Es muss FormatSettings.ThousandSeparator lauten
mfg

Thomas Feichtner
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#3

AW: Umstellung D7 -> XE4

  Alt 26. Jul 2013, 07:22
Hallo,

beim DecimalSeperator sollte das gleiche Problem sein, wie beim ThousandSeparator. Für die anderen Fehler wäre es hilfreich zu wissen, welche Zeile es ist aus Deinem Codeschnipsel.
Rolf Warnecke
App4Mission
  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, 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.171 Beiträge
 
Delphi 10.4 Sydney
 
#5

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.009 Beiträge
 
Delphi 12 Athens
 
#6

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
 
#7

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
 
#8

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.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

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.009 Beiträge
 
Delphi 12 Athens
 
#10

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 22:48 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