Мобильная версия форумов
Открыть
 −4°C
завтра: −13°C
Погода в Перми
−4°C
днем−3°C
вечером−3°C
завтра−13°C
Подробно
  баллов
Пробки
баллов
 66,70
+0.1615
Курс USD ЦБ РФна 16 февраля
66,7044
+0.1615
 75,25
+0.2021
Курс EUR ЦБ РФна 16 февраля
75,2492
+0.2021
  • activist

    Сообщений: 382

    Следующая инструкция вызывает ошибку во время компиляции:
    Form1.ListBox.Items.LoadFromFile('d:\profile.dat');
    Скриншоты в аттаче.
    Вопрос: Я что-то делаю не так, или может просто лыжи не едут?

    Отсутствие вариантов – тоже вариант, но самый худший.

  • activist

    Сообщений: 382

    Следом выскакивает вот такое окошко. По коду это "Общая ошибка защиты (General protection fault)"

    Отсутствие вариантов – тоже вариант, но самый худший.

  • рыжий котэ

    Сообщений: 12083

    скорее всего файло некорректно сохранено и программа не может загрузить элементы списка :спок:

    Осторожнее с травой!
    Если хапнешь много дряни
    Увезут тебя с собой
    Злые инопланетяне

  • activist

    Сообщений: 382

    Файл создается функцией FileCreate. Даже если вручную создать этот файл в блокноте, то получается та же фигня. В C++Builder эта инструкция работала вполне корректно.

    Отсутствие вариантов – тоже вариант, но самый худший.

  • Господин Уэф!

    Анонимный пользователь

    Я не большой спец.
    Но осмелюсь предположить. Если Delphi5 то могут быть глюки компилятора или еще Бог знает чего.
    У меня в одной проге при компиляции в 4 версии одна функция работала (Получить с TChart.Canvas изображение и перекинуть его в TImage) При компиляции в 5 версии упорно выдавала ошибку на эту функцию в 6,7 снова все в норме. Так что может не твои лыжи не едут?

  • activist

    Сообщений: 382

    В ответ на: Но осмелюсь предположить. Если Delphi5 то могут быть глюки компилятора или еще Бог знает чего.
    Delphi 7. Но я тоже склоняюсь к версии, что это глюк компилятора. Приду домой и попробую 6-ю версию.

    Отсутствие вариантов – тоже вариант, но самый худший.

  • activist

    Сообщений: 382

    Понял в чем проблема. Инструкция у меня прописана в разделе initialization, поэтому выскакивает ошибка. Как убрать ее из этого раздела, если мне нужно, чтобы она выполнялась при запуске программы? (Не бейте за тупые вопросы, я раньше писАл на С++, а Дельфи изучаю недавно :o:улыб::ха-ха!:)

    Отсутствие вариантов – тоже вариант, но самый худший.

  • Господин Уэф!

    Анонимный пользователь

    Извини я сам не силен. Не знаю что за раздел.

  • Господин Уэф!

    Анонимный пользователь

    Наверное ручками берешь и переносишь.
    Вот что нашел в справке:

    Каждый модуль в общем случае имеет структуру:

    unit ;

    interface // Открытый интерфейс модуля

    {Сюда могут помещаться списки подключаемых модулей, объявления типов, констант, переменных, функций и процедур, к которым будет доступ из других модулей }

    implementation // Реализация модуля

    {Сюда могут помещаться списки подключаемых модулей, объявления типов, констант, переменных, к которым не будет доступа из других модулей. Тут же должны быть реализации всех объявленных в разделе interface функций и процедур, а также могут быть реализации любых дополнительных, не объявленных ранее функций и процедур.}

    initialization {не обязательный}



    finalization {не обязательный}


    end.

  • рыжий котэ

    Сообщений: 12083

    В конструкторе формы прописываешь... и все будет нормально. :спок:

    Осторожнее с травой!
    Если хапнешь много дряни
    Увезут тебя с собой
    Злые инопланетяне

  • activist

    Сообщений: 382

    Вчера подумал малость и сделал так:
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Newdirname:=GetCurrentDir;
    Profile:=(Newdirname+'\profile.dat');
    if FileExists(Profile)=false then FileClose(FileCreate(Profile));
    Form1.ListBox.Items.LoadFromFile(Newdirname+'\profile.dat');
    end;

    Отсутствие вариантов – тоже вариант, но самый худший.

  • рыжий котэ

    Сообщений: 12083

    Я об этом и писал.

    Осторожнее с травой!
    Если хапнешь много дряни
    Увезут тебя с собой
    Злые инопланетяне

  • activist

    Сообщений: 382

    Я так и понял. :улыб:Спасибо.

    Отсутствие вариантов – тоже вариант, но самый худший.

  • Анонимный пользователь
    нельзя так делать.
    Form1 - глобальная переменная. Она может быть
    1. не инициализирована вообще (если отключено автосоздание форм проекта)
    2. проинициализирована не тем экземпляром.

    И вообще - слишком много действий...

    procedure TForm1.FormCreate(Sender: TObject);
    var
    FileName: String;
    begin
    FileName := ExtractFileName(Application.Exename) + 'profile.dat';
    if FileExists(FileName) then
    ListBox.Items.LoadFromFile(FileName);
    end;

    Исправлено пользователем DmitryWP (22.02.05 15:22)

  • рыжий котэ

    Сообщений: 12083

    Ну да, ты прав... просто я не обратил внимание что у автора в коде конструктора обращение к экземпляру объекта.

    Осторожнее с травой!
    Если хапнешь много дряни
    Увезут тебя с собой
    Злые инопланетяне

  • activist

    Сообщений: 382

    Понял, отстал...:улыб:

    Отсутствие вариантов – тоже вариант, но самый худший.

  • veteran

    Сообщений: 1347

    Так я не понял заработало или нет.

    Я постоянно пользую для считывния текстовых файлов TStringList.LoadFromFile. Правда не проверяю на его наличие, а делаю в теле try ... except

    Писал и в 5-й и в 7-й версиях, все работало. Данные ошибки, как мне кажется связаны с системой. Аксес вайлэшн - кто-то еще пользует.

    Или я ошибаюсь?!

  • activist

    Сообщений: 382

    В ответ на: Данные ошибки, как мне кажется связаны с системой
    Не знаю, пробовал на двух разных машинах с абсолютно разными конфигурациями. Я писАл выше, что ошибка появляется только тогда, когда инструкция прописана в разделе initialization.
    В ответ на: Так я не понял заработало или нет.
    Да. После перемещения в конструктор формы.

    Отсутствие вариантов – тоже вариант, но самый худший.

  • activist

    Сообщений: 382

    В ответ на: нельзя так делать.
    Form1 - глобальная переменная. Она может быть
    1. не инициализирована вообще (если отключено автосоздание форм проекта)
    2. проинициализирована не тем экземпляром.
    Кстати, забыл сказать, эта форма главная и единственная, так что, наверное, можно......

    Отсутствие вариантов – тоже вариант, но самый худший.

  • activist

    Сообщений: 382

    Блин, только сейчас догнал-- инструкции раздела initialization выполняются в самом начале программы, то есть, видимо, перед обращением к конструктору формы, а так как я пытался обратиться к свойству объекта, размещенного на этой форме, то............

    Отсутствие вариантов – тоже вариант, но самый худший.

  • Анонимный пользователь
    это просто плохой стиль
    так делать в принципе можно, но не рекомендуется
    а главная форма может когданибудь перестать быть главной. На все воля божья.
    Использование глобальных переменных находится вне парадигмы ООП

  • рыжий котэ

    Сообщений: 12083

    В ответ на:
    В ответ на: нельзя так делать.
    Form1 - глобальная переменная. Она может быть
    1. не инициализирована вообще (если отключено автосоздание форм проекта)
    2. проинициализирована не тем экземпляром.
    Кстати, забыл сказать, эта форма главная и единственная, так что, наверное, можно......
    И все равно так нельзя. Удали Form1. и будет нормально!

    Осторожнее с травой!
    Если хапнешь много дряни
    Увезут тебя с собой
    Злые инопланетяне

  • activist

    Сообщений: 382

    Действительно, туплю......:смущ:

    Отсутствие вариантов – тоже вариант, но самый худший.

Записей на странице:

Перейти в форум

Модератор: