![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
IamDreamer |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 867 Регистрация: 6.6.2005 Репутация: нет Всего: 7 |
В Memo1 текст:
в Memo2:
При выполнении кода
вылетает ошибка <Project raised exception class EConvertError with message ''' is not a valid floating point value'>. В чём ошибка? |
||||||
|
|||||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
-------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
IamDreamer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 867 Регистрация: 6.6.2005 Репутация: нет Всего: 7 |
||||
|
||||
THandle |
|
|||
![]() Хранитель Клуба ![]() Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 50 Всего: 372 |
IamDreamer, может на всякий случай еще использовать TryStrToFloat?
|
|||
|
||||
IamDreamer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 867 Регистрация: 6.6.2005 Репутация: нет Всего: 7 |
THandle, вообще можно, но. Первоначально в Memo числа заносятся из текстового файла (по условию решаемой задачи). Реализовано вот так:
Перед началом процедуры нужно указать путь к файлу с данными. Мне бы лучше сделать проверку на существование файла (если, например, путь к файлу не указали, а сразу попытались считать данные). |
|||
|
||||
Frees |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 16 Всего: 54 |
и еще (на всякий случай) в мемо можно сразу грузить файл....
-------------------- Кольцов Виктор Владимирович |
||||
|
|||||
IamDreamer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 867 Регистрация: 6.6.2005 Репутация: нет Всего: 7 |
||||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 7 Всего: 15 |
Возможно, в начале работы программы стоит сделать так:
А то вдруг разделитель точка. |
|||
|
||||
IamDreamer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 867 Регистрация: 6.6.2005 Репутация: нет Всего: 7 |
Пишу:
На что заменить <halt>, чтобы при ошибке программа возвращалась к этапу выбора файла? Метку создать? Пробовал запускать OpenDialog.Execute (с последующим Reset()), но при считывании значений из файла вылетала ошибка ![]() |
|||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 7 Всего: 15 |
Для начала пиши:
как то оно грамотней. Ну напиши exit попробуй. А лучше весь код покажи - а то не понятно куда надо возвращаться программе. Это сообщение отредактировал(а) superVad - 23.3.2011, 18:01 |
|||
|
||||
IamDreamer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 867 Регистрация: 6.6.2005 Репутация: нет Всего: 7 |
В первоначальном варианте так и было
![]() |
|||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 7 Всего: 15 |
IamDreamer, какой ты быстрый
![]() Exit попробуй - но возможно я не до конца понял что то. |
|||
|
||||
IamDreamer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 867 Регистрация: 6.6.2005 Репутация: нет Всего: 7 |
superVad, спасибо! То самое.
|
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 16 Всего: 54 |
у TOpenDialog есть опция ofFileMustExist - позволит открыть только существующий файл.
Добавлено через 1 минуту и 12 секунд http://www.beluch.ru/progr/100comp/8_2.htm -------------------- Кольцов Виктор Владимирович |
|||
|
||||
IamDreamer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 867 Регистрация: 6.6.2005 Репутация: нет Всего: 7 |
Сделал так:
|
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 16 Всего: 54 |
а если исключение вызовет FloatToStr, формат числа например кривой ?
то MessageDLG(... введет в заблуждение и скроет реальную ошибку! -------------------- Кольцов Виктор Владимирович |
|||
|
||||
IamDreamer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 867 Регистрация: 6.6.2005 Репутация: нет Всего: 7 |
||||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 16 Всего: 54 |
я FloatToStr и StrToFloat перепутал... FloatToStr - врядли вызовет исключение.... Это сообщение отредактировал(а) Frees - 23.3.2011, 19:30 -------------------- Кольцов Виктор Владимирович |
|||
|
||||
IamDreamer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 867 Регистрация: 6.6.2005 Репутация: нет Всего: 7 |
Обещали файл только с числами. Я их присваиваю переменным, потом вывожу в Memo.
|
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
Ну раз обещали, то можно и так. Вот только кого назовут стрелочником, если что-то пойдет не так? Ну и вдогонку. Read/Readln могут и не вызвать исключение. Если не включена соответствующая опция компилятора. По умолчанию она включена. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
IamDreamer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 867 Регистрация: 6.6.2005 Репутация: нет Всего: 7 |
||||
|
||||
IamDreamer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 867 Регистрация: 6.6.2005 Репутация: нет Всего: 7 |
Файл оказался несколько иной формы: имеет вид
Переменной типа TTime можно напрямую из файла командой Readln(filename, T) присвоить значение первого столбца (т.е. чтобы после выполнения Readln(Filename, T) значение T=11:17:01)? |
|||
|
||||
superVad |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 7 Всего: 15 |
Я не уверен но возможно надо в FormCreate такое поставить:
И можно будет использовать функцию StrToTime. ПС Вероятно я ошибся и надо использовать LongTimeFormat вместо ShortTimeFormat. В общем поэкспериментируй, попробуй как работает такое:
Это сообщение отредактировал(а) superVad - 24.3.2011, 19:05 |
||||
|
|||||
IamDreamer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 867 Регистрация: 6.6.2005 Репутация: нет Всего: 7 |
||||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 7 Всего: 15 |
||||
|
||||
IamDreamer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 867 Регистрация: 6.6.2005 Репутация: нет Всего: 7 |
superVad, числа же сразу считываются.
|
|||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 7 Всего: 15 |
||||
|
||||
IamDreamer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 867 Регистрация: 6.6.2005 Репутация: нет Всего: 7 |
||||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 16 Всего: 54 |
TTime - это на самом деле Float а в файле у тебя строка, читай строку и StrToTime используй.
-------------------- Кольцов Виктор Владимирович |
|||
|
||||
IamDreamer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 867 Регистрация: 6.6.2005 Репутация: нет Всего: 7 |
Frees, спасибо. Теперь другая загвоздка: в строковую переменную в результате Readln(filename, stroka) присваивается вся строка, т.е. "11:17:01 1144 268,42 213 65". Как сделать так, чтобы в эту переменную записывалось только время без редактирования файла?
|
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 16 Всего: 54 |
может так, хотя не уверен..
-------------------- Кольцов Виктор Владимирович |
|||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 7 Всего: 15 |
Или:
|
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 16 Всего: 54 |
данные после времени тоже надо из строки stroka брать, Read из файла уже следующую строку данных верноет Это сообщение отредактировал(а) Frees - 24.3.2011, 21:30 -------------------- Кольцов Виктор Владимирович |
|||
|
||||
IamDreamer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 867 Регистрация: 6.6.2005 Репутация: нет Всего: 7 |
Readln (Filename, Stroka) без ошибок. Если добавить ещё 2 переменные (Readln(Filename, Stroka, A, B)), вылетает та же ошибка. A, B - переменные типа Real.
Это сообщение отредактировал(а) IamDreamer - 24.3.2011, 21:33 |
|||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 7 Всего: 15 |
||||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 12 Всего: 20 |
2 superVad.
Ну не хочет автор "распарсивать" строки данного ему файла. Ему хочется использовать процедуру Read/Readln! Мне бы тоже хотелось бы этого, если бы я не знал, что "компилер маджик" всё-таки не волшебная палочка. ![]() -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
IamDreamer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 867 Регистрация: 6.6.2005 Репутация: нет Всего: 7 |
В общем, дело вот в чём. Файл имеет расширение .csv, в блокноте его содержимое выглядит так:
Readln() не может считать информацию из-за разделителей ';' (пробовал заменить их на пробелы - всё получилось). Запятые, отделяющие целую часть от дробной, вроде переваривает. Нужно либо считать все данные в строку, а затем из неё вытащить числа, либо на этапе чтения из файла заставить читать, несмотря на точки с запятыми. Мне второй вариант кажется менее объёмным, но слабо представляю, как его осуществить... |
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 16 Всего: 54 |
дак работай с ним как с csv, по средствам TStringList (DelimitedText) -------------------- Кольцов Виктор Владимирович |
|||
|
||||
superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 7 Всего: 15 |
Как то так:
Это сообщение отредактировал(а) superVad - 25.3.2011, 09:52 |
|||
|
||||
IamDreamer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 867 Регистрация: 6.6.2005 Репутация: нет Всего: 7 |
Тут задание снова поменяли... Новый вид файла с входными данными:
Как учесть то, что последнее значение отделено несколькими пробелами? |
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 16 Всего: 54 |
может это Tab ? Добавлено через 2 минуты и 59 секунд пример написанный IamDreamer должен был переварить пробелы -------------------- Кольцов Виктор Владимирович |
|||
|
||||
IamDreamer |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 867 Регистрация: 6.6.2005 Репутация: нет Всего: 7 |
Попробовал в качестве Delimiter указать ' ' (один пробел) и проверил результат командой
Результат:
Выходит, количество пробелов ему безразлично ![]() Добавлено через 59 секунд SuperVad. Да, переварил. За что ему ещё раз спасибо! А то я уже выматерил тех, кто мне это задание выдал. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |