Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Warnung beseitigen (https://www.delphipraxis.net/147850-warnung-beseitigen.html)

Muellermilchtrinker 17. Feb 2010 16:53


Warnung beseitigen
 
Servus DP,

ich hab in meinem Projekt eine Warnung. Diese möchte ich nun beseitigen. 8-)
Folgende Warnung:
Code:
[DCC Warnung] Unit1.pas(176): W1050 WideChar in Set-Ausdrücken auf ByteChar verkürzt. Ziehen Sie die Verwendung der Funktion 'CharInSet' aus der Unit 'SysUtils' in Betracht.
Die Warnung tritt in folgender Funktion auf:
Delphi-Quellcode:
function Compare_NaturalSort(List: TStringList; Index1, Index2: Integer): Integer;

  function JustNumbers(instr:string):string ;
  var
    t:integer;
  begin
   for t:=1 to length(instr) do
     if instr[t] in ['0'..'9'] then result:=result+instr[t];// hier kommt die Warnung -.-
  end;

var
  di1, di2: Integer;
begin
  if not TryStrToInt(JustNumbers(List[Index1]), di1) then
    di1:=0;
  if not TryStrToInt(JustNumbers(List[Index2]), di2) then
    di2:=0;

  if di1<di2 then
    Result:=-1
  else if di1>di2 then
    Result := 1
  else
    Result := 0;
end;
Die Delphi-Version kann man aus meinem Profil entnehmen.^^

Ich hoffe ihr könnt mir helfen.

Uwe Raabe 17. Feb 2010 17:02

Re: Warnung beseitigen
 
Delphi-Quellcode:
if CharInSet(instr[t], ['0'..'9']) then result:=result+instr[t];

himitsu 17. Feb 2010 17:03

Re: Warnung beseitigen
 
Nutze einfach das CharInSet, welches auch erwähnt wird?


PS: genau wegen sowas wurde auch Einiges "erfunden", so wie
http://www.delphipraxis.net/internal...t.php?t=152883
und
http://www.delphipraxis.net/internal...t.php?t=169966

Muellermilchtrinker 17. Feb 2010 17:08

Re: Warnung beseitigen
 
Danke. Die Lösung von Uwe ist perfekt. :thumb:

himitsu 17. Feb 2010 17:16

Re: Warnung beseitigen
 
auch wenn's schon gelöst wurde ... hier nochmal einige Ansätze:
Delphi-Quellcode:
function JustNumbers(instr:string):string;
var
  t:integer;
begin
  result:=instr;
  for t:=length(instr) downto 1 do
    if (instr[t] < '0') or (instr[t] > '9') then delete(result, i, 1);
end;

function JustNumbers(instr:string):string;
var
  t:integer;
begin
  result:=instr;
  for t:=length(instr) downto 1 do
    if not CharInSet(instr[t], ['0'..'9']) then delete(result, i, 1);
end;

uses DynSet;
function JustNumbers(instr:string):string;
var
  t:integer;
begin
  result:=instr;
  for t:=length(instr) downto 1 do
    if not DecimalDigits.Contains(instr[t]) then delete(result, i, 1);
end;


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