| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Почему не работает прога |
| Автор: Code Magister 28.8.2004, 15:02 | ||
| Кому не лень просмотреть прогу, помогите разобраться. Прога при активации выводит данные из файла в СтрингГрид (6 х 50 ячеек), а по щелчку на кнопке Сохранить сохраняет их. Но она то не то выводит, то вообще не выводит:
|
| Автор: Code Magister 31.8.2004, 13:00 |
| МЛЯ, СПАСИБО ВСЕМ ЗА ДРУЖНЫЙ ОТВЕТ! ВСЕ С ВАМИ ПОНЯТНО |
| Автор: EKoshelev 2.9.2004, 12:15 |
| Короче, тема такая. Ты ошибся, когда написал, что она их сохраняет. Если файл не был создан, то прога его создаёт. А если он уже есть, то она сверху не пишет. Я когда гонял твой код у меня С: в проводнике сидел и когда я сохранял то файл этот оставался на своём месте, а когда он перезаписывается то оказывается внизу списка в проводнике. Догнал? Короче не сохраняет. Я в директивах типа {$I-} не рублю, но мне кажется, что дело в них. Я их никогда не юзаю и у меня пожизни поверх пишется без вопросов. |
| Автор: Code Magister 2.9.2004, 22:52 |
| Хм.. ща буду разбираться, а {$I-} ... {$I+} - это что-то вроде прога берет на себя ответственность за ошибки между этими командами, тойсь винда не выдает сообщ. об ошибке. Если IOResult <> 0, то значит ошибки есть... |
| Автор: Messages 2.9.2004, 23:57 |
| Лучше всего будет убрать директивы {I} и использовать try...except и try...finallity (вроде так). В хелпе про них много есть! А вообше, ты выключаешь сообщения об ошибках (этой самой {I-}), создаешь чего-то и спрашиваешь код ошибки. Это маразм!!!!! Еще. Зачем тебе тип 1..5 используй Byte все равно и то и другое по байту! И "нуль" можешь использовать, как "в ячейке нет ничего". |
| Автор: Dimich 3.9.2004, 07:42 | ||
Ничего это не маразм! Только если уж используешь {$I-}, то делай это на всю процедуру ввода-вывода и после каждого ввода-вывода проверяй IOresult A так все правильно кажется делается, просто с самого первого взляда бросается в глага, что запись и чтение файла начинаются с текущей позиции (после первого чтения - это конец файла). Попробуй поставить перед Read и Write - FileSeek (f, 0); И не забудь закрыть файл после работы с ним.... |
| Автор: decoder 3.9.2004, 15:31 | ||
| Попробуй вместо file of TRecord использовать TextFile и записуй туда поля своего TRecord... И ещё: у меня глюк был, не помню, чё произошло, но суть в том, что цикл Фор без бегин и енд не инициализировался, хотя в теле была всего одна операция... С директивой {$I} у тебя всё правильно. Ещё один совет: Ф7. Добавлено @ 15:33 к стати, Dimich правильно сказал
Скорее всего в этом дело... |
| Автор: Underdark 6.9.2004, 09:24 | ||
| Молодец, Dimich!!! Отлично про всё сказал! _Slipknot, такой вопросик, а что конкретно програмулина неправильно выводит в Грид? И ещё, не делай так:
С этим у тебя все в порядке... |
| Автор: RA 7.9.2004, 01:35 | ||
Надобы добавить
|
| Автор: Code Magister 9.9.2004, 15:17 | ||
Выводит только значение первой переменной массива, а после еще нескольких нажатий кнопки "Обновить"(код которой равен коду FormActivate) выводит еще значения и то неправильные =) Но мне тут уже столько написали, за что всем спасибо, что, надеюсь, теперь я разберусь. |
| Автор: Underdark 11.9.2004, 14:29 |
| Пока ещё не понял почему у тебя такая фиговина, но кажется энто всё из-за неправильного сохранения. Единственное, ещё может ты перепутал строки и колонки в самом массиве при сохранении, но это навряд ли... Удачи! |
| Автор: Конструктор 14.9.2004, 10:09 |
| А не проще ли сохранять данные в текстовый файл записывая в него собственно строки из StringGrid? Последовательно записать, потом последовательно считать. |