ďťż

Ładny brzuch

Mam w TEdit wartość '1.50', musze wartość String zmienić na Real. Aby to zrobić muszę użyć funkcji StrToFloat(), jednak, aby jej użyć to musze mieć '1,50'. Przy wymnażaniu wartości 1,50 razy np. 2 to wywala błąd, bo musi być 1.50 razy 2.

Jak mam to zrobić? Jeżeli nie zrozumieliście to niech napisze jedna osoba. To postaram się lepiej wytłumaczyć.



procedure TForm1.Button1Click(Sender: TObject); var s:single; begin Edit1.Text:='1.50'; DecimalSeparator:='.'; s:=strtofloat(Edit1.Text); s:='1,50'; DecimalSeparator:=','; Edit1.Text:=floattostr(s*2); end;hmmmm??????
Użytkownik Cyrkiel edytował ten post 22 kwiecień 2005, 19:40
to przed StrToFloat zrób tak:

str := Edit1.Text;
while Pos('.', Str) <> 0 do
Str[Pos('.', Str)] :=',';
Rl := StrToFloat(Str);

PS nie powinno się urzywać w Delphi typu Real, ponieważ pozostał on tylko dla kompatybilności ze starszymi wersjami i jest na dobrą sprawe reprezentowany jako Single.




Działa, jeszcze tylko są problemy z mnożeniem zmiennych Single z tablicy. Nie wiem czemu. W tablicy jest wartość,




Po tykonaniu tych funkcji masz np 1,50 a takiej wartości nie przemnożysz! Musi być 1.50!




Po tykonaniu tych funkcji masz np 1,50 a takiej wartości nie przemnożysz! Musi być 1.50!

StringReplace ??


to sie pobaw danymi regionalnymi czy jakos tak :P
To właśnie jest DecimalSeparator :huh:


Mam w TEdit wartość '1.50', musze wartość String zmienić na Real. Aby to zrobić muszę użyć funkcji StrToFloat(), jednak, aby jej użyć to musze mieć '1,50'. Przy wymnażaniu wartości 1,50 razy np. 2 to wywala błąd, bo musi być 1.50 razy 2.
No i to robi moja procedura. A jak już zmienisz na Real to tam już nie ma ani . ani , bo to jest liczba zapisana na bitach a nie string!!!!!!!!!!! O co ci chodzi z tym , że nie możesz 1,50 przemnożyc przez 2 tylko musi być 1.50?????? Jak masz Real (Sigle, Double czy co tam jeszcze) to tam nie ma separatorów dziesię tnych tam są 0 albo 1, chłopie o co tobie chodzi z tym pytaniem?

Po twoich postać widać, że początkujący jesteś - weź odpalgoogle, wpisz "delphi kurs" i zaczni się uczyć podstaw!!!


Jak masz Real (Sigle, Double czy co tam jeszcze) to tam nie ma separatorów dziesię tnych tam są 0 albo 1, chłopie o co tobie chodzi z tym pytaniem?

To właśnie jest DecimalSeparator :huh:

Dobra. Ale jak 1,50 nie jest pobierane z TEdit tylko ręcznie musze ją przypisać to wajcha :)

Misiekd - od tego wydaje mi sie jest forum. A mój stopień zaawansowania to ty sie niemartw!

//Tak pozatym to dałem sobie rade dzięki poradzie "Cyrkla"
Użytkownik mariuszlorenc edytował ten post 24 kwiecień 2005, 10:57

Dobra. Ale jak 1,50 nie jest pobierane z TEdit tylko ręcznie musze ją przypisać to wajcha :)


(...) dalej nie wiem o co ci chodzi, przecież 1,14 to nie jest liczba ułamkowa tylko dwie liczby całkowite oddzielone przecinkiem!!
Tak, ale podczas konwersji ze stringa na float domyślnie musi być przecinek zamiast kropki ;)

A czy nie można w Edicie poprostu zablokować możliwości wpisania kropki?

if key = '.' then key := #0;
??

dodatek do kodu programisty1101 :
if not ((key in ['1'..'9'])or(key=',')or(key='-')) then key:=#0;

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •