AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem Mit FloatToStr

Ein Thema von inherited · begonnen am 19. Dez 2005 · letzter Beitrag vom 20. Dez 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#1

Problem Mit FloatToStr

  Alt 19. Dez 2005, 21:26
Hi,
auch ich bin neu hier im Forum angemeldet(hab vorher öfter schon vorbeigeschaut)
doch jetzt hab ich ein Problem und keinen Plan woran es liegen könnte
Ich benutze Delphi 3 (tja leider kein geld für was besseres) und irgendwie mag Delphi folgende Zeilen nicht

erg2:=FloatToStr(erg5); wobei erg2 ein String und erg5 ein real ist.
Er sagt dann immer "Operator ist auf diesen Operandentyp nicht anwendbar"
Was soll ich tun
Bitte helft mir *verzweifeltguck*
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
engine

Registriert seit: 6. Mär 2005
73 Beiträge
 
#2

Re: Problem Mit FloatToStr

  Alt 19. Dez 2005, 21:43
Hallo inherited,

herzlich willkommen in der DP.

Ich erhalte keine Fehlermeldung beim Compilieren. Kannst Du uns ein wenig mehr Code zeigen?


Mit freundlichen Grüßen

engine
  Mit Zitat antworten Zitat
marabu

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

Re: Problem Mit FloatToStr

  Alt 19. Dez 2005, 21:43
Herzlich willkommen in der Delphi-PRAXiS.

Zitat von inherited:
wobei erg2 ein String und erg5 ein real ist.
Offensichtlich scheint das nicht ganz zu stimmen. Du kannst es überprüfen, indem du die fehlerhafte Zeile auf Kommentar setzt und folgende Prozedur aufnimmst:

Delphi-Quellcode:
procedure ConversionTest;
var
  s: string;
  r: real;
begin
  r := 1.5;
  s := FloatToStr(r);
end;
Wenn die Prozedur fehlerlos übersetzt wird, dann musst du mal nachforschen, welchen Typ erg2 und erg5 bei dir wirklich haben.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Problem Mit FloatToStr

  Alt 19. Dez 2005, 21:49
ich hab jetzt ein bisschen rumgedebugged(was für ein wort) und es scheint an meiner if-abfrage zu liegen dessen teil der o.g. quelltext ist und nicht daran. Vielen dank trotzdem
ach ja auch da find ich den fehler nicht(nicht erschrecken das ist gerade so verkompliziert weil ich den fehler gesucht hatte und es deshalb zerlegt in einzelne schritte)
Delphi-Quellcode:
var
  erg2: String;
  erg3: Integer;
  erg4, erg5: Real;

//...

procedure Runden(erg1: String);
var i: Integer;
for i := 1 to length(erg1) do
  begin
    erg2:=erg2+'0';
    erg2[i]:=erg1[i];
    if erg1[i]= ',then
    begin
      erg2[i+1]:=erg1[i+1];
      erg2[i+2]:=erg1[i+2];
      if erg1[i+3]='5or if erg1[i+3]='6or if erg1[i+3]='7or if erg1[i+3]='8or if erg1[i+3]='9then
      begin
        erg3:=round(StrToInt(erg2)*100);
        erg2:=IntToStr(erg3);
        erg4:=StrToFloat(erg2);
        erg5:=erg4/100.0;
        erg2:=FloatToStr(erg5);
        erg2:=IntToStr(erg3);
      end; //hier liegt der fehler
    end;
  end;
end;
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
marabu

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

Re: Problem Mit FloatToStr

  Alt 19. Dez 2005, 22:07
Besser, du schreibst mal, was du erreichen willst. Was geht rein in deine Prozedur (ein string, welches Format?), was soll raus kommen? Wieder ein String? Du verwendest ohne Not globale Variablen (erg2, erg3, ...), die in deiner Prozedur nicht initialisiert werden. Der Name Runden() suggeriert ja schon etwas. Welches Rundungsverfahren willst du umsetzen? Welche Genauigkeit bzw. wieviele Nachkommastellen soll das Ergebnis haben?

marabu
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Problem Mit FloatToStr

  Alt 19. Dez 2005, 22:12
sooviele fragen?? nagut also mit erg2 soll man weiterarbeiten(warum ich keine funktion nutze: keine ahnung) deswegen global
erg3,4,5 sind deshalb global weil ich sie nur zur fehlerüberprüfung genutzt habe und sie eben mal deklariert hab.
was da reingeht ist eine zahl als string im format 100,01 o.ä. es soll beträge die eingegeben werden auf 3 nachkommastellen runden

Für alternativen/verbesserungen bin ich stets offen, solang sie delphi 3 kompatibel sind

edit: kann es sein das es am if ... or if... liegt?
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
marabu

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

Re: Problem Mit FloatToStr

  Alt 19. Dez 2005, 22:22
Das geht nicht?

Delphi-Quellcode:
function Gerundet(rValue: real): real;
begin
  Result := Round(rValue * 1000) / 1000;
end;
marabu
  Mit Zitat antworten Zitat
Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Problem Mit FloatToStr

  Alt 19. Dez 2005, 22:24
HEY, das is ja GENIAL warum ich da nicht selbst drauf gekommen bin...
DANKE
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat
marabu

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

Re: Problem Mit FloatToStr

  Alt 19. Dez 2005, 22:38
Einen Pferdefuß hat dieser Ansatz - er beschränkt die Zahl der signifikanten Stellen in deiner Real-Variablen auf etwa 8. Vielleicht möchtest du deinen String-Ansatz ja noch etwas im Auge behalten...

Gute Nacht

marabu
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Problem Mit FloatToStr

  Alt 19. Dez 2005, 23:04
Hi marabu,
Ich runde immer auf und verwende Extended:
Delphi-Quellcode:
function Gerundet(rValue: Extended): Extended;
begin
  Result := Round(0.5 + rValue * 1000) / 1000;
end;
Irgendwann hab ich mir das 'Real' abgelehnt. Irgendwer im Forum hat mich darauf gebracht, lieber CPU-native Typen zu verwenden. Double und Extended sind die wohl.

So jetse ...chhrrr....chhhrrrr...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:35 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