Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 25.12.2008, 14:07
JohnnyBravo JohnnyBravo вне форума
Прохожий
 
Регистрация: 25.12.2008
Сообщения: 10
Репутация: 10
По умолчанию Pchar

Всем, Здравствуйте.
Подскажите пожалуйста, как мне сохранить переменную типа Pchar, в файл обычный txt хотя бы?
Ума не приложу.

Цитата:
VAR P : PChar;
f : textfile;
t: real; //// хоть integer
begin
P := DdeClientConv1.RequestData('S1');
Label1.Caption:=(P);
t:=strtofloat(p);
/// t := t*1.5;
AssignFile(f, 'c:\list.txt');
Rewrite(f);
write(f,p);
closefile(f);
StrDispose(P);
end;

Последний раз редактировалось JohnnyBravo, 26.12.2008 в 12:08.
Ответить с цитированием
  #2  
Старый 25.12.2008, 14:20
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,025
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ковертируй в String с помощью функции StrPas и записывай куда хочешь.
Ответить с цитированием
  #3  
Старый 25.12.2008, 15:25
JohnnyBravo JohnnyBravo вне форума
Прохожий
 
Регистрация: 25.12.2008
Сообщения: 10
Репутация: 10
По умолчанию

Спасибо.
а не подскажите, почему значение не пишится в файл?
ошибку выдаёт
Цитата:
[Error] Unit1.pas(51): Incompatible types: 'Integer' and 'Text'
Ответить с цитированием
  #4  
Старый 25.12.2008, 16:05
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,025
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, он, компилятор, говорит, что несоответсвие типов в переданных параметрах (или при присваивании). Смотри внимательно свой код.
Ответить с цитированием
  #5  
Старый 26.12.2008, 12:05
JohnnyBravo JohnnyBravo вне форума
Прохожий
 
Регистрация: 25.12.2008
Сообщения: 10
Репутация: 10
По умолчанию

Вы и я не обратили внимание, должно быть closefile, а не fileclose.
Теперь подскажите, почему вылетает ошибка при конвертации strtofloat, пишет 'is not a valid floating point value'
Что то на точку ругается.
Значение с dde сервера берётся допустим 50.5 и в файл записывается 50.5.
В региональных настройках стоит разделение целой и дробной части точка.
Мне просто нужно число для того что бы произвести над ним вычисления. Подскажите в чём я ошибся?
Ответить с цитированием
  #6  
Старый 26.12.2008, 15:57
JohnnyBravo JohnnyBravo вне форума
Прохожий
 
Регистрация: 25.12.2008
Сообщения: 10
Репутация: 10
По умолчанию

чё самое интересное, сделал t:=length(p);
т.е. 50,1 вроде бы 4 получается, не знаю считается ли запятая или нет, но в общем получилось 6
Ответить с цитированием
  #7  
Старый 26.12.2008, 18:24
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

Цитата:
Сообщение от JohnnyBravo
чё самое интересное, сделал t:=length(p);
т.е. 50,1 вроде бы 4 получается, не знаю считается ли запятая или нет, но в общем получилось 6
Вполне вероятно, что в тексте присутствуют пробелы или управляющие символы, попробуй сначала "обтримить" полученое число, т.е.
Код:
t:=StrToFloat(Trim(p));
__________________
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard

Последний раз редактировалось cotseec, 26.12.2008 в 18:28.
Ответить с цитированием
  #8  
Старый 28.12.2008, 07:03
JohnnyBravo JohnnyBravo вне форума
Прохожий
 
Регистрация: 25.12.2008
Сообщения: 10
Репутация: 10
По умолчанию

Собственно вот. Не выходит ...
Цитата:
[Error] Unit3.pas(49): There is no overloaded version of 'Trim' that can be called with these arguments
Потом просто сделал g:=Trim(y);
в итоге длина получилась 4, потом попробовал strtofloat и снова пишет ошибку 'There is no overloaded version ... '
Ответить с цитированием
  #9  
Старый 28.12.2008, 08:00
JohnnyBravo JohnnyBravo вне форума
Прохожий
 
Регистрация: 25.12.2008
Сообщения: 10
Репутация: 10
По умолчанию

В общем после таких манипуляций
Цитата:
y := string(p);
str:=Trim(y);
g:=strtofloat(str);
выходит такая ошибка.
Изображения
Тип файла: jpg Capture_8.jpg (20.5 Кбайт, 4 просмотров)
Ответить с цитированием
  #10  
Старый 28.12.2008, 08:13
JohnnyBravo JohnnyBravo вне форума
Прохожий
 
Регистрация: 25.12.2008
Сообщения: 10
Репутация: 10
По умолчанию

DecimalSeparator и точку и запятую ставил, ничего не меняется.
Ответить с цитированием
  #11  
Старый 28.12.2008, 08:22
JohnnyBravo JohnnyBravo вне форума
Прохожий
 
Регистрация: 25.12.2008
Сообщения: 10
Репутация: 10
По умолчанию

Цитата:
Ошибка - " is not a valid floating point value".
Могу предположить, что Вы исопльзуете функцию strtofloat. И коем-то образом на входе у Вас оказывается пустая строка.
интересно было бы узнать ,что на входе у меня.
Ответить с цитированием
  #12  
Старый 28.12.2008, 08:29
JohnnyBravo JohnnyBravo вне форума
Прохожий
 
Регистрация: 25.12.2008
Сообщения: 10
Репутация: 10
По умолчанию

showmessage(str);
показывает пустое сообщение, до тех пор, пока я 2 раза не нажму на 'ok', далее отображается число ...
Ответить с цитированием
  #13  
Старый 28.12.2008, 13:47
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,025
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну вот ты сам и ответил на свой вопрос - пустая строка там у тебя. Естественно, пустая строка не является числом с плавающей точкой.
Ответить с цитированием
  #14  
Старый 28.12.2008, 15:45
JohnnyBravo JohnnyBravo вне форума
Прохожий
 
Регистрация: 25.12.2008
Сообщения: 10
Репутация: 10
По умолчанию

Да там событие происходит onchange и всё в одной процедуре. Сделал отдельную другую процедуру по таймеру, где происходит преобразование + вычисления, и тогда всё встало на свои места, причем через глобальную переменную.
Спасибо за советы.
А не подскажите ли вы мне, как задать формат числа при strtofloat, а то получается вот такое '2.53000000000000E+0001'? а нужно 25.3
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:54.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter