[Форум] [Помощь] [Поиск] [Выйти] |
Добро пожаловать, ![]() |
|
|
| ||
....мне надо сделать так чтобы данные которые являются не целыми числами вводились потом по заданным формулам рассчитывались....но у меня проблЕМа такая...если вводить данные в edit то тип получается string а мне нужно эти данные использовать далее как числа т е ф формате real...но при переводе чисел с пом val строков тип можно перевести только в integer....вот так....может есть более легкий путь...или я что то не правильно делаю...подскажите пожалуйста... |
| ||
Ну чувак насмешил :) Нажимайте хоть иногда F1 да бы посмотреть как в делфи просходит работа с числами! Пример: пишем например слово Single, далее нажимаем F1 и видим какие типы бывают в делфи, а также другие полезные ссылки например на arifmetic routines. А так напиши MyFloatValue := StrToFloat(Edit.Text); И не забуть на StrToFloat нажать F1 :) |
| ||
...при переводе чисел с пом val строков тип можно перевести только в integer... Потрясающие познания о функции val. |
| ||
Мне б твои проблемы.... Исчерпывающий ответ тебе дал ГудMейкер. зы. Хотя я пожалуй смог бы перевести число из String в Real с помощью Val(); :-))) |
| ||
Поможем начинающему, вот этот код переведет строку Edit1.Text в формат real (переменная Real_A) по нажатию кнопки Button1: procedure TForm1.Button1Click(Sender: TObject); var I, Code: Integer; A,B,real_A:real; begin I:=pos(',',Edit1.Text); if I=0 then I:=pos('',Edit1.Text); if I=0 then val(Edit1.Text,Real_A,Code) else begin val(copy(Edit1.Text,1,length(Edit1.Text)-i-1),A,Code); if Code<>0 then showmessage('Ахтунк! Обнаружены кривые руки!'); val(copy(Edit1.Text,i+1,length(Edit1.Text)-i),B,Code); for I:=1 to length(Edit1.Text)-i do B:=B*0.1; Real_A:=A+B; end; if Code<>0 then showmessage('Ахтунк! Обнаружены кривые руки!'); end; |
| ||
2Лешка, расскажи как там у тебя успехи? получилось из строки то в чилсо перевести? (А то материала тебе слишком много понаписали как бы не запутался) :) |
| ||
to Ondulyansion: Вот любопытно стало, а чего текста то так много? |
| ||
Для наглядности, конечно. можно, например, ещё так: procedure TForm1.Button1Click(Sender: TObject); var I,J, Code: Integer; Real_A:real; begin I:=pos(',',Edit1.Text); if I=0 then I:=pos('.',Edit1.Text); val(copy(Edit1.Text,1,i-1)+copy(Edit1.Text,i+1,length(Edit1.Text)-i),Real_A,Code); if Code<>0 then showmessage('кривые руки!'); if i=0 then i:=length(Edit1.Text); for J:=1 to length(Edit1.Text)-i do Real_A:=Real_A/10; end; |
| ||
Кстати, вопрос в тему.. Почему когда я пишу в Edit'e допустим 11.25 а потом делаю x:=StrToFloat(Edit.Text); то оно мне в x выдает не 11.25 а чтонить типа 11.250000003214... как с этим бороться? Нашел функцию RoundTo чтобы округлять до определенного порядка, но оно почему-то не срабатывает.. |
| ||
GoodMaker'у: спасибо за беспокойство все получиось, сделал классную прогу. Даже самому понравилось !!! others: спасибо всем кто откликнулся на мою просьбу |
| ||
Не благодари (с) |
| ||
Вордятина это проблема перевода из двоички в десятичку |