−7°C
завтра: −9°C
Погода в Перми
−7°C
днем−8°C
вечером−6°C
завтра−9°C
Подробно
 63,23
−0.3396
Курс USD ЦБ РФна 13 декабря
63,2257
−0.3396
 70,43
−0.0287
Курс EUR ЦБ РФна 13 декабря
70,4271
−0.0287
  • Следующая инструкция вызывает ошибку во время компиляции:
    Form1.ListBox.Items.LoadFromFile('d:\profile.dat');
    Скриншоты в аттаче.
    Вопрос: Я что-то делаю не так, или может просто лыжи не едут?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    unit ;

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

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

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

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

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



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


    end.

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

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

  • Вчера подумал малость и сделал так:
    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;

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

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

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

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

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

  • нельзя так делать.
    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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Модератор: