22. juli 2004 - 22:58Der er
24 kommentarer og 1 løsning
Prøve at konvertere string til int eller curr
Kan man på en eller anden måde undersøge om en string kan konverteres til integer eller currency(real) inden man rent faktisk gør det? Jeg vil gerne undgå fejlkommandoen når man konverterer en string som indeholder andet end tal.
I Delphi har borland glemt at lave en sådan funktion derfor er du nød til at skrive dem selv. Jeg bruger det følgende, som implementerings og interface messigt ligger sig op af Borlands kode :
function TryStrToCurr(S: string; var Value: Currency): Boolean; begin s := StringReplace(S, ThousandSeparator, '', [rfReplaceAll]); if s = '' then Result := False else Result := TextToFloat(Pointer(S), Value, fvCurrency); end;
function TryStrToFloat(S: string; var Value: Extended): Boolean; begin s := StringReplace(S, ThousandSeparator, '', [rfReplaceAll]); if s = '' then Result := False else Result := TextToFloat(Pointer(S), Value, fvExtended); end;
function StrToCurrDef(const Str: string; Default: Currency): Currency; var Curr: Currency; begin if not TryStrToCurr(Str, Curr) then Result := Default else Result := Curr; end;
function StrToFloatDef(const Str: string; Default: Extended): Extended; var Value: Extended; begin if not TryStrToFloat(Str, Value) then Result := Default else Result := Value; end;
function JBStrToCurrDef(S: string; const Default: Currency): Currency; var i: Integer; begin I := 1; while I <= Length(S) do begin if not (s[i] in ['0'..'9', DecimalSeparator,'-']) then Delete(s, i, 1) else Inc(i); end;
if not Sysutils.TryStrToCurr(S, Result, FormatSettings) then Result := Default; end;
function JBStrToCurr(const S: string): Currency; { Same as StrToCurr, but fault tolerence for ThousandSeparator etc. Præ: - Post: S converted to a Currency, else 0 (Zero) returned} begin Result := AKStrToCurrDef(s, 0); end;
Nej det har jeg ikke. Jeg søgte men det var SLET ikke noget. Firmaet var et to mands firma, og de søgte i den sidste ende en WEB programmør ikke en Delphi programmør.
borrisholt. virker meget godt, men der er tre ting: - "if not Sysutils.TryStrToCurr(S, Result, FormatSettings) then", hvad er FormatSettings, delphi kan ikke forstå det. - "Result := AKStrToCurrDef(s, 0);", hvad betyder AKStrToCurrDef? - VIGTIGST AF ALT: hvordan indfletter jeg det til rent faktisk brug?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.