Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка is not a valid floating point value, при StrToFloat() из Memo 
V
    Опции темы
Frees
Дата 24.3.2011, 20:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



может так, хотя не уверен..
Код

stroka: array [0..7] of char;
Read(filename, stroka) ;






--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
superVad
Дата 24.3.2011, 21:14 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 7
Всего: 15



Или:
Код

Read(filename, stroka) ;
stroka := copy(stroka,1,8);

PM MAIL   Вверх
Frees
Дата 24.3.2011, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



Цитата(superVad @  25.3.2011,  00:14 Найти цитируемый пост)
Или:


данные после времени тоже надо из строки stroka брать, Read из файла уже следующую строку данных верноет

Это сообщение отредактировал(а) Frees - 24.3.2011, 21:30


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
IamDreamer
Дата 24.3.2011, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 867
Регистрация: 6.6.2005

Репутация: нет
Всего: 7



Readln (Filename, Stroka) без ошибок. Если добавить ещё 2 переменные (Readln(Filename, Stroka, A, B)), вылетает та же ошибка. A, B - переменные типа Real.

Это сообщение отредактировал(а) IamDreamer - 24.3.2011, 21:33
PM MAIL WWW Jabber   Вверх
superVad
Дата 24.3.2011, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 7
Всего: 15



Цитата(Frees @  24.3.2011,  20:26 Найти цитируемый пост)
данные после времени тоже надо из строки stroka брать, Read из файла уже следующую строку данных верноет

Ну использовать другую переменную smile или вообще:  
Код

  T := StrToTime(copy(stroka,1,8));

PM MAIL   Вверх
northener
Дата 25.3.2011, 02:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



2 superVad.
Ну не хочет автор "распарсивать" строки данного ему файла. Ему хочется использовать процедуру  Read/Readln!
Мне бы тоже хотелось бы этого, если бы я не знал, что "компилер маджик" всё-таки не волшебная палочка.
smile


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
IamDreamer
Дата 25.3.2011, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 867
Регистрация: 6.6.2005

Репутация: нет
Всего: 7



В общем, дело вот в чём. Файл имеет расширение .csv, в блокноте его содержимое выглядит так:
Цитата
11:17:01;1144;268,42;213;65;
11:17:02;1144;268,42;213;65;
11:17:03;1144;268,42;213;65;

Readln() не может считать информацию из-за разделителей ';' (пробовал заменить их на пробелы - всё получилось). Запятые, отделяющие целую часть от дробной, вроде переваривает. 

Нужно либо считать все данные в строку, а затем из неё вытащить числа, либо на этапе чтения из файла заставить читать, несмотря на точки с запятыми. Мне второй вариант кажется менее объёмным, но слабо представляю, как его осуществить... 
PM MAIL WWW Jabber   Вверх
Frees
Дата 25.3.2011, 09:15 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



Цитата(IamDreamer @  25.3.2011,  11:16 Найти цитируемый пост)
В общем, дело вот в чём. Файл имеет расширение .csv

дак работай с ним как с csv, по средствам TStringList (DelimitedText)


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
superVad
Дата 25.3.2011, 09:51 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 735
Регистрация: 6.4.2006
Где: Черкассы, Украина

Репутация: 7
Всего: 15



Как то так:
Код

var
  tsl_file, tsl_str: TStringList;
  i: Integer;
begin
  tsl_file := TStringList.Create;
  tsl_str := TStringList.Create;
  tsl_file.LoadFromFile('путь к файлу');
  tsl_str.Delimiter := ';';
  for i := 0 to tsl_file.Count -1 do
  begin
    tsl_str.Clear;
    tsl_str.DelimitedText := tsl_file[i];
    //тут работаешь с данными
    //в tsl_str[0] будет время и т.д. до tsl_str[4]
  end;
  FreeAndNil(tsl_str);
  FreeAndNil(tsl_file);
end;


Это сообщение отредактировал(а) superVad - 25.3.2011, 09:52
PM MAIL   Вверх
IamDreamer
Дата 29.3.2011, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 867
Регистрация: 6.6.2005

Репутация: нет
Всего: 7



Тут задание снова поменяли... Новый вид файла с входными данными:
Цитата
MAR 25 14:14:28.7203    -42.60639
MAR 25 14:14:29.3747    -42.26153
MAR 25 14:14:30.0292    -42.43396
MAR 25 14:14:30.6860    -42.29026
MAR 25 14:14:31.3436    -42.34774


Как учесть то, что последнее значение отделено несколькими пробелами?
PM MAIL WWW Jabber   Вверх
Frees
Дата 29.3.2011, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



Цитата(IamDreamer @  29.3.2011,  17:47 Найти цитируемый пост)
 несколькими пробелами?

может это Tab ?

Добавлено через 2 минуты и 59 секунд
пример написанный IamDreamer должен был переварить пробелы


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
IamDreamer
Дата 29.3.2011, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 867
Регистрация: 6.6.2005

Репутация: нет
Всего: 7



Попробовал в качестве Delimiter указать ' ' (один пробел) и проверил результат командой 
Код
ShowMessage(tsl_Values[0] + '***' + tsl_Values[1] + '***' + tsl_Values[2] + '***' + tsl_Values[3]);

Результат:
Цитата
MAR***25***14:14:59.4293***-16.33926

Выходит, количество пробелов ему безразлично smile.

Добавлено через 59 секунд
Цитата(Frees @  29.3.2011,  17:54 Найти цитируемый пост)
пример написанный IamDreamer должен был переварить пробелы 

SuperVad. Да, переварил. За что ему ещё раз спасибо! А то я уже выматерил тех, кто мне это задание выдал.
PM MAIL WWW Jabber   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1099 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.