WEB форумы на jedi
[Форум] [Помощь] [Поиск] [Выйти]
Добро пожаловать, [info]User

WEB форумы на jedi [ПОИСК] [Архив до 03.2006]

Тема вопрос по Delphi... К предыдущему сообщению На следующее сообщение Программирование

Отправил Лeшкa в 01:31 10.05.2004[Ответить]
....мне надо сделать так чтобы данные которые являются не целыми числами вводились потом по заданным формулам рассчитывались....но у меня проблЕМа такая...если вводить данные в edit то тип получается string а мне нужно эти данные использовать далее как числа т е ф формате real...но при переводе чисел с пом val строков тип можно перевести только в integer....вот так....может есть более легкий путь...или я что то не правильно делаю...подскажите пожалуйста...


Отправил GoodMaker в 02:20 10.05.2004[Ответить]
Ну чувак насмешил :) Нажимайте хоть иногда F1 да бы посмотреть как в делфи просходит работа с числами! Пример: пишем например слово Single, далее нажимаем F1 и видим какие типы бывают в делфи, а также другие полезные ссылки например на arifmetic routines. А так напиши MyFloatValue := StrToFloat(Edit.Text); И не забуть на StrToFloat нажать F1 :)


Отправил KiaProg в 15:22 10.05.2004[Ответить]
...при переводе чисел с пом val строков тип можно перевести только в integer...

Потрясающие познания о функции val.


Отправил Sleep-Walker в 17:19 10.05.2004[Ответить]
Мне б твои проблемы....
Исчерпывающий ответ тебе дал ГудMейкер.

зы. Хотя я пожалуй смог бы перевести число из String в Real с помощью Val(); :-)))


Отправил Ondulyansion в 18:42 10.05.2004[Ответить]
Поможем начинающему, вот этот код переведет строку 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;


Отправил GoodMaker в 21:28 10.05.2004[Ответить]
2Лешка, расскажи как там у тебя успехи? получилось из строки то в чилсо перевести? (А то материала тебе слишком много понаписали как бы не запутался) :)


Отправил KiaProg в 01:40 12.05.2004[Ответить]
to Ondulyansion: Вот любопытно стало, а чего текста то так много?


Отправил Ondulyansion в 01:47 12.05.2004[Ответить]
Для наглядности, конечно.
можно, например, ещё так:

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;


Отправил MrAnderson в 22:02 12.05.2004[Ответить]
Кстати, вопрос в тему.. Почему когда я пишу в Edit'e допустим 11.25 а потом делаю x:=StrToFloat(Edit.Text); то оно мне в x выдает не 11.25 а чтонить типа 11.250000003214... как с этим бороться? Нашел функцию RoundTo чтобы округлять до определенного порядка, но оно почему-то не срабатывает..


Отправил Лeшкa в 23:30 12.05.2004[Ответить]
GoodMaker'у: спасибо за беспокойство все получиось, сделал классную прогу. Даже самому понравилось !!!

others: спасибо всем кто откликнулся на мою просьбу


Отправил Ondulyansion в 09:26 13.05.2004[Ответить]
Не благодари (с)


Отправил Nork в 14:11 26.08.2004[Ответить]
Вордятина это проблема перевода из двоички в десятичку