Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Umwandlung String in Double (https://www.delphipraxis.net/34838-umwandlung-string-double.html)

allarich 29. Nov 2004 08:46


Umwandlung String in Double
 
Hallo !
Ich hab ein Problem,daß ich möglichst schnell lösen möchte.
Ich muß eine Spalte einer Tabelle aufsummieren, deren Werte in Stringform vorliegen.
Ich möchte nin die Strings in Realgrößen (Double) umwandeln und aufsummieren.Will bei mir nicht funktionieren. Wie kann ich das möglichst einfach realisieren ?

MfG
allarich

mirage228 29. Nov 2004 08:47

Re: Umwandlung String in Double
 
Hi,

schau mal Delphi-Referenz durchsuchenStrToFloat ;)

mfG
mirage228

Jasocul 29. Nov 2004 08:47

Re: Umwandlung String in Double
 
Die Funktion StrToFloat sollte da helfen.

allarich 29. Nov 2004 09:55

Re: Umwandlung String in Double
 
Hallo Freunde,

habe ich schon probiert.Hat aber nicht geklappt. Vielleicht ein Fehler von mir ?
Habe folgende source verwendet:
Delphi-Quellcode:
var
  i: Integer;
  Z1: string;
  Ergebnis: Double;

begin
  Ergebnis:= 0;
  i:= 0;
  REPEAT
    i:= i + 1;
    Z1:= ws.Cells.Item[i];
    Ergebnis:=Ergebnis + StrToFloat(Z1);
    end;
  UNTIL Z1 = ''
end;
Wer sieht hier wo einen Fehler ?

MfG
allarich

[edit=Sharky]Delphi-Tags gesetzt und den Code etwas formatiert ;-) Mfg, Sharky[/edit]

Sanchez 29. Nov 2004 10:04

Re: Umwandlung String in Double
 
Hallo,

Du hast da ein end zuviel. So wird es gar nicht kompilieren.
Außerdem solltest du vor dem StrToFloat sicherstellen, das Z1 kein Leerstring ist, oder am Besten gleich Delphi-Referenz durchsuchenTryStrToFloat benutzen um sicherzugehen, dass in Z1 ein gültiger String steht.



Delphi-Quellcode:
var
  i: Integer;
  Z1: string;
  Ergebnis: Double;

begin
  Ergebnis:= 0;
  i:= 0;
  REPEAT
    i:= i + 1;
    Z1:= ws.Cells.Item[i];
    Ergebnis:=Ergebnis + StrToFloat(Z1);
    end; <--- das ist zuviel
  UNTIL Z1 = ''
end;
grüße, daniel

allarich 29. Nov 2004 10:55

Re: Umwandlung String in Double
 
Hallo Sanchez,
Du hast natürlich recht. Ich habe das begin nach REPEAT vergessen !
Habe aber noch ne andere Frage,vielleicht kannst Du mir hier auch helfen.
Wie frage ich programmtechnisch ab, ob ein Workbook schon geöffnet ist ?

MfG
allarich

Sanchez 29. Nov 2004 10:57

Re: Umwandlung String in Double
 
Ich fürchte, da kann ich dir nicht helfen. Ich hab nämlich keine Ahnung, was ein Workbook ist.

jim_raynor 29. Nov 2004 12:06

Re: Umwandlung String in Double
 
Denk daran, dass Delphi ein . als Dezimaltrenner erwartet. Ein Komma wird nicht akzeptiert. Generell darf bei StrToFloat der String nicht Formatiert sein (also zum Beispiel keine führenden Leerzeichen oder Tausendertrennzeichen).

Sanchez 29. Nov 2004 12:13

Re: Umwandlung String in Double
 
Zitat:

Zitat von jim_raynor
Denk daran, dass Delphi ein . als Dezimaltrenner erwartet. Ein Komma wird nicht akzeptiert.

Meine OH sagt dazu was anderes:
Zitat:

Die globale Variable DecimalSeparator definiert das Zeichen, das als Dezimaltrennzeichen verwendet werden muß. Tausendertrennzeichen und Währungssymbole sind nicht zulässig. Enthält S keinen gültigen Wert, wird eine EConvertError-Exception ausgelöst.
Ich hab nämlich vorher beim Probieren ne Exception bekommen, wie ich . verwendet hab.

Luckie 29. Nov 2004 13:28

Re: Umwandlung String in Double
 
Zitat:

Zitat von allarich
Wie frage ich programmtechnisch ab, ob ein Workbook schon geöffnet ist ?

Öffne bitte für eine neue Frage einen neuen Thread. Danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:45 Uhr.
Seite 1 von 2  1 2      

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