Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Listview sortieren (Dateigroesse und Speed)

  Alt 24. Nov 2005, 13:19
Hi Lucius,

da deine Daten aus einem XML-File stammen und du sie intern in einer StringList speicherst, kommst du um das eventuell mehrfache Konvertieren der Strings nicht herum. Probier die Konvertierung mal mit der folgenden Funktion anstelle von StrToFloat():

Delphi-Quellcode:
type
  TDemoForm = class(TForm)
  ...
  private
    fs: TFormatSettings;
  end;

function StrToBytes(s: string; fs: TFormatSettings; decimal: boolean = true): double;
var
  sValue: string;
  factor: integer;
begin
  if decimal
    then factor := 1000
    else factor := 1024;
  sValue := ParseStr(s, ' ');
  Result := StrToFloat(sValue, fs);
  case s[1] of
    'G': Result := Result * factor * factor;
    'K': Result := Result * factor;
  end;
end;

procedure TDemoForm.Create(Sender: TObject);
begin
  // initialize format settings
  GetLocaleFormatSettings(GetUserDefaultLCID, fs);
  // in case of differing decimal point settings
  fs.DecimalSeparator := '.';
  fs.ThousandSeparator := ',';
end;

procedure TDemoForm.ButtonClick(Sender: TObject);
begin
  try
    d := StrToBytes('312.45 MB', fs);
    ShowMessage(FloatToStr(d));
  except
    ShowMessage('damned');
  end;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat