ограничение на количество картинок?

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем ARTHES, 12 фев 2007.

  1. ARTHES

    ARTHES Гость

    Здравствуйте! Может кто подскажет, как решить такую проблему:
    Пишу проект с развитым так сказать графическим оформлением, каждая кнопочка и т.д. прорисовывалась в фотошопе как отдельная картинка. Но проект не маленький, и картинок этих накопилось уже около 250-300, каждая весит от 20 Kb до 100 Kb, все вместе они где-то 8 Mb.
    Так вот, при работе программы в определенный момент выкидывает ошибку открытия картинки:

    ...exception class EFOpenError with message 'Cannot open file images\buttons\us_edit_user.jpg'...

    А картинка эта там все-таки есть. Причем после этого "события" ни одну картинку билдер уже не может открыть, даже те, которые только что открывал. Картинки загружаю так:

    Image7->Picture->LoadFromFile("images\\buttons\\us_edit_user.jpg");

    Причем если закомментировать открытие картинок раньше в проекте, работа программы НЕ "продвигается" дальше, опять на том же шаге выдает такую же ошибку открытия картинки. Если же закомментировать открытие той картинки, на которой вылетает ошибка, то ошибка эта вылетает уже на следующей попытке открыть другую картинку.

    Что было уже сделано:
    - в Google ничего похожего не нашел;
    - везде где использовал new использовал и delete;
    - переместил из папки images\\... все бэкапы картинок и бэкапные *.psd-файлы в другое место, тем самым уменьшил вес папки в 15 раз, а количество в ней файлов в 3 раза;
    - пересохранил 116 картинок с меньшим качеством, уменьшил тем самым вес еще 800 Kb;

    НИЧЕГО из этого абсолютно никак не повлияло на работу программы, она вылетает в том же месте.

    Может кто подскажет:
    1. может ли быть такое, что в билдере есть какое-то ограничение на количество используемых в проекте картинок
    2. может можно как-то ЧИСТИТЬ ПАМЯТЬ от картинок, которые были загружены на предыдущей форме, а на этой уже не используются
    3. имеет ли смысл загружать картинки на каждую форму по мере открытия этой формы, а не на FormCreate , как это сделано у меня сейчас

    Заранее благодарен.
     
  2. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--QuoteBegin-ARTHES+12:02:2007, 12:42 -->
    <span class="vbquote">(ARTHES @ 12:02:2007, 12:42 )</span><!--QuoteEBegin-->2. может можно как-то ЧИСТИТЬ ПАМЯТЬ от картинок, которые были загружены на предыдущей форме, а на этой уже не используются
    [snapback]55814" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    В общем случае, после разрушения формы память будет очищена автоматически, если контролы были созданы в Design Time. Стоит только убедится, что форма действительно разрушается, а не скрывается, т.е. в Close формы должно стоять Action = caFree.
    Ошибка явно из-за того, что доступ к файлу закрыт. К сожалению, хелпа под рукой нет, так что подробнее сказать ничего не могу.
    <!--QuoteBegin-ARTHES+12:02:2007, 12:42 -->
    <span class="vbquote">(ARTHES @ 12:02:2007, 12:42 )</span><!--QuoteEBegin-->3. имеет ли смысл загружать картинки на каждую форму по мере открытия этой формы,
    [snapback]55814" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Это как? Я что-то не очень понял
     
  3. ARTHES

    ARTHES Гость

    Спасибо за идею, сейчас буду со всем этим разбираться, а пока везде где нашел поменял Hide() на Close(), но не помогло.

    3. имеет ли смысл загружать картинки на каждую форму по мере открытия этой формы - имел ввиду оставлять на форме картинки пустые, на FormActivate загружать, на FormDeactivate делать картинку опять пустой, т.е. Image7->Picture->None
     
  4. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--QuoteBegin-ARTHES+12:02:2007, 13:29 -->
    <span class="vbquote">(ARTHES @ 12:02:2007, 13:29 )</span><!--QuoteEBegin-->везде где нашел поменял Hide() на Close(), но не помогло.
    [snapback]55830" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    В FormClose стоит Action = caFree?
    <!--QuoteBegin-ARTHES+12:02:2007, 13:29 -->
    <span class="vbquote">(ARTHES @ 12:02:2007, 13:29 )</span><!--QuoteEBegin-->оставлять на форме картинки пустые, на FormActivate загружать, на FormDeactivate делать картинку опять пустой, т.е. Image7->Picture->None
    [snapback]55830" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    ИМХО, не стоит, т.к. лишняя возня, не дающая какого-нибудь выйгрыша
     
  5. ARTHES

    ARTHES Гость

    На всех формах на onClose поставил Action = caFree, теперь на том же месте выдает ошибку:

    ...class EAccessViolation with message 'Access violation at address 0001001D. Write of adress 3A004300'...

    ошибка вылетает или при загрузке формы, или при каком-либо действии на этой форме. Если на этой форме комментирую Action = caFree , получаю привычную ошибку открытия картинки. Может просто форму эту удалить и создать заново?
     
  6. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--QuoteBegin-ARTHES+12:02:2007, 13:53 -->
    <span class="vbquote">(ARTHES @ 12:02:2007, 13:53 )</span><!--QuoteEBegin-->...class EAccessViolation with message 'Access violation at address 0001001D. Write of adress 3A004300'...
    [snapback]55837" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Если вылетает такое эксепшн, то дело явно не чисто. Без кода тут фиг что скажешь
     
  7. ARTHES

    ARTHES Гость

    даже и не знаю, поможет ли код, просто его так много... и вроде ничего особенного там нет...

    Короче есть у меня в проге такая функция сохранения (удаления/редактирования) списка пользователей, который хранится в файле users.ini, и сохранения лога запуска программы и ее использования, который хранится в файле log +дата+время.log
    При работе программы сразу загружается:
    окно списка пользователей, на котором есть ListBox(в котором и есть список пользователей), кнопки типа "редактировать запись", "удалить запись", "новая запись" (выполнены в виде картинок). Кнопки эти пока не работают(еще не написал), но при загрузке формы кнопки "редактировать запись", "удалить запись" неактивны (одна картинка) пока не выберешь пользователя в ListBox-е,а как выберешь становятся активными(другая картинка):

    Form Create:

    [
    void __fastcall TForm7::FormCreate(TObject *Sender)
    {
    GlobalWAS_modified = false;

    usr_selected = false;
    ListBox1->Clear();

    FILE *stream;

    stream = fopen("D:\\RESEARCH\\users\\users.ini", "r");

    fgets(temp_str, 3, stream);
    avail_usr_cnt = StrToInt(temp_str);
    int k;

    for(int i=0;i<avail_usr_cnt;i++)
    {
    fgets(temp_str, 3, stream);

    fgets(usr_name_str, 25, stream);
    just_str = usr_name_str; //get the
    k = just_str.Length(); // length of the string
    usr_n1_length = k;

    fgets(usr_name_str, 25, stream);
    just_str = usr_name_str; //get the
    k = just_str.Length(); // length of the string
    usr_n2_length = k;

    fgets(usr_name_str, 25, stream);
    just_str = usr_name_str; //get the
    k = just_str.Length(); // length of the string
    usr_n3_length = k;

    fgets(usr_pssw_str, 6, stream);
    usr_pssw = usr_pssw_str; //password of i. user
    }

    fclose(stream);

    //--- one more time :unsure: ---//

    FILE *stream2;

    stream2 = fopen("D:\\RESEARCH\\users\\users.ini", "r");

    fgets(temp_str, 3, stream2);

    for(int i=0;i<avail_usr_cnt;i++)
    {
    fgets(temp_str, 3, stream2);

    fgets(usr_name_str, usr_n1_length, stream2);
    usr_name1 = usr_name_str; //1. name of i. user
    //ListBox1->Items->Add(usr_name1);

    fgets(temp_str, 3, stream);

    fgets(usr_name_str, usr_n2_length, stream2);
    usr_name2 = usr_name_str; //2. name of i. user

    fgets(temp_str, 3, stream);

    fgets(usr_name_str, usr_n3_length, stream2);
    usr_name3 = usr_name_str; //3. name of i. user

    FULL_name = usr_name1 + " " + usr_name2 + " " + usr_name3;
    ListBox1->Items->Add(FULL_name);

    fgets(temp_str, 3, stream);

    fgets(usr_pssw_str, 6, stream);
    }
    fclose(stream2);
    Image7->Picture->LoadFromFile("images\\buttons\\us_edit_user_unactive.jpg");
    Image8->Picture->LoadFromFile("images\\buttons\\us_delete_user_unactive.jpg");
    }
    ]

    Form Activate:

    [
    void __fastcall TForm7::FormActivate(TObject *Sender)
    {
    if(GlobalWAS_modified == true)
    {
    usr_selected = false;

    ListBox1->Clear();

    FILE *stream;

    stream = fopen("D:\\RESEARCH\\users\\users.ini", "r");

    fgets(temp_str, 3, stream);
    avail_usr_cnt = StrToInt(temp_str);
    int k;

    for(int i=0;i<avail_usr_cnt;i++)
    {
    fgets(temp_str, 3, stream);

    fgets(usr_name_str, 25, stream);
    just_str = usr_name_str; //get the
    k = just_str.Length(); // length of the string
    usr_n1_length = k;

    fgets(usr_name_str, 25, stream);
    just_str = usr_name_str; //get the
    k = just_str.Length(); // length of the string
    usr_n2_length = k;

    fgets(usr_name_str, 25, stream);
    just_str = usr_name_str; //get the
    k = just_str.Length(); // length of the string
    usr_n3_length = k;

    fgets(usr_pssw_str, 6, stream);
    usr_pssw = usr_pssw_str; //password of i. user
    }

    fclose(stream);

    //--- one more time :unsure: ---//

    FILE *stream2;

    stream2 = fopen("D:\\RESEARCH\\users\\users.ini", "r");

    fgets(temp_str, 3, stream2);

    for(int i=0;i<avail_usr_cnt;i++)
    {
    fgets(temp_str, 3, stream2);

    fgets(usr_name_str, usr_n1_length[i], stream2);
    usr_name1[i] = usr_name_str; //1. name of i. user
    //ListBox1->Items->Add(usr_name1[i]);

    fgets(temp_str, 3, stream);

    fgets(usr_name_str, usr_n2_length[i], stream2);
    usr_name2[i] = usr_name_str; //2. name of i. user

    fgets(temp_str, 3, stream);

    fgets(usr_name_str, usr_n3_length[i], stream2);
    usr_name3[i] = usr_name_str; //3. name of i. user

    FULL_name[i] = usr_name1[i] + " " + usr_name2[i] + " " + usr_name3[i];
    ListBox1->Items->Add(FULL_name[i]);

    fgets(temp_str, 3, stream);

    fgets(usr_pssw_str, 6, stream);
    }
    fclose(stream2);

    Image7->Picture->LoadFromFile("images\\buttons\\us_edit_user_unactive.jpg");
    Image8->Picture->LoadFromFile("images\\buttons\\us_delete_user_unactive.jpg");
    }
    ]

    ListBox1Click:

    [
    for(int i=0;i<ListBox1->Items->Count;i++)
    {
    if(ListBox1->Selected[i])
    {
    usr_selected = true;
    Image7->Picture->LoadFromFile("images\\buttons\\us_edit_user.jpg");
    Image8->Picture->LoadFromFile("images\\buttons\\us_delete_user.jpg");
    GlobalF_usr = usr_name1[i];
    GlobalI_usr = usr_name2[i];
    GlobalO_usr = usr_name3[i];
    GlobalPSW_usr = usr_pssw[i];
    }
    }
    ]

    FormClose:

    [
    void __fastcall TForm7::FormClose(TObject *Sender, TCloseAction &Action)
    {
    Action = caFree;
    }
    ]

    Еще на этой форме есть кнопки "доступ"(просмотр log-файлов) и "протоколы". Эти кнопки просто перекидывают на новые почти пустые окна окна, на которых пока(еще не написал) ничего кроме загрузки картинок не происходит.

    Так вот ошибка вылетает когда я из любого окна "доступ" и "протоколы" перехожу на окно "пользователи" и выбираю в ListBox-е пользователя. Причем ошибка ОТКРЫТИЯ КАРТИНКИ вылетает, если во всех этих трех формах Action = caFree НЕТУ (в остальных во всех есть), а АКСЕСС ВИАЛЕЙШН когда ХОТЯ бы в ОДНОМ из этих трех файлов в FormClose Action = caFree ЕСТЬ, причем вылетает уже еще только на загрузке формы "пользователи".

    Может проще все-таки переписать эту форму заново???[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
     
  8. ARTHES

    ARTHES Гость

    ИЗВИНЯЮСЬ, сейчас код перепишу нормально(а то ж не читается):

    Короче есть у меня в проге такая функция сохранения (удаления/редактирования) списка пользователей, который хранится в файле users.ini, и сохранения лога запуска программы и ее использования, который хранится в файле log +дата+время.log
    При работе программы сразу загружается:
    окно списка пользователей, на котором есть ListBox(в котором и есть список пользователей), кнопки типа "редактировать запись", "удалить запись", "новая запись" (выполнены в виде картинок). Кнопки эти пока не работают(еще не написал), но при загрузке формы кнопки "редактировать запись", "удалить запись" неактивны (одна картинка) пока не выберешь пользователя в ListBox-е,а как выберешь становятся активными(другая картинка):
    Код (Text):
    void __fastcall TForm7::FormCreate(TObject *Sender)
    {
    GlobalWAS_modified = false;

    usr_selected = false;
    ListBox1->Clear();

    FILE *stream;

    stream = fopen("D:\\RESEARCH\\users\\users.ini", "r");

    fgets(temp_str, 3, stream);
    avail_usr_cnt = StrToInt(temp_str);
    int k;

    for(int i=0;i<avail_usr_cnt;i++)
    {
    fgets(temp_str, 3, stream);

    fgets(usr_name_str, 25, stream);
    just_str = usr_name_str;          //get the
    k = just_str.Length();          //  length of the string
    usr_n1_length[i] = k;

    fgets(usr_name_str, 25, stream);
    just_str = usr_name_str;          //get the
    k = just_str.Length();          //  length of the string
    usr_n2_length[i] = k;

    fgets(usr_name_str, 25, stream);
    just_str = usr_name_str;          //get the
    k = just_str.Length();          //  length of the string
    usr_n3_length[i] = k;

    fgets(usr_pssw_str, 6, stream);
    usr_pssw[i] = usr_pssw_str;     //password of i. user
    }

    fclose(stream);

    //--- one more time :) ---//

    FILE *stream2;

    stream2 = fopen("D:\\RESEARCH\\users\\users.ini", "r");

    fgets(temp_str, 3, stream2);

    for(int i=0;i<avail_usr_cnt;i++)
    {
    fgets(temp_str, 3, stream2);

    fgets(usr_name_str, usr_n1_length[i], stream2);
    usr_name1[i] = usr_name_str;      //1. name of i. user
    //ListBox1->Items->Add(usr_name1[i]);

    fgets(temp_str, 3, stream);

    fgets(usr_name_str, usr_n2_length[i], stream2);
    usr_name2[i] = usr_name_str;      //2. name of i. user

    fgets(temp_str, 3, stream);

    fgets(usr_name_str, usr_n3_length[i], stream2);
    usr_name3[i] = usr_name_str;      //3. name of i. user

    FULL_name[i] = usr_name1[i] + " " + usr_name2[i] + " " + usr_name3[i];
    ListBox1->Items->Add(FULL_name[i]);

    fgets(temp_str, 3, stream);

    fgets(usr_pssw_str, 6, stream);
    }
    fclose(stream2);
    Image7->Picture->LoadFromFile("images\\buttons\\us_edit_user_unactive.jpg");
    Image8->Picture->LoadFromFile("images\\buttons\\us_delete_user_unactive.jpg");
    }
    Код (Text):
    void __fastcall TForm7::FormActivate(TObject *Sender)
    {
    if(GlobalWAS_modified == true)
    {
    usr_selected = false;

    ListBox1->Clear();

    FILE *stream;

    stream = fopen("D:\\RESEARCH\\users\\users.ini", "r");

    fgets(temp_str, 3, stream);
    avail_usr_cnt = StrToInt(temp_str);
    int k;

    for(int i=0;i<avail_usr_cnt;i++)
    {
    fgets(temp_str, 3, stream);

    fgets(usr_name_str, 25, stream);
    just_str = usr_name_str;          //get the
    k = just_str.Length();          //  length of the string
    usr_n1_length[i] = k;

    fgets(usr_name_str, 25, stream);
    just_str = usr_name_str;          //get the
    k = just_str.Length();          //  length of the string
    usr_n2_length[i] = k;

    fgets(usr_name_str, 25, stream);
    just_str = usr_name_str;          //get the
    k = just_str.Length();          //  length of the string
    usr_n3_length[i] = k;

    fgets(usr_pssw_str, 6, stream);
    usr_pssw[i] = usr_pssw_str;     //password of i. user
    }

    fclose(stream);

    //--- one more time :) ---//

    FILE *stream2;

    stream2 = fopen("D:\\RESEARCH\\users\\users.ini", "r");

    fgets(temp_str, 3, stream2);

    for(int i=0;i<avail_usr_cnt;i++)
    {
    fgets(temp_str, 3, stream2);

    fgets(usr_name_str, usr_n1_length[i], stream2);
    usr_name1[i] = usr_name_str;      //1. name of i. user
    //ListBox1->Items->Add(usr_name1[i]);

    fgets(temp_str, 3, stream);

    fgets(usr_name_str, usr_n2_length[i], stream2);
    usr_name2[i] = usr_name_str;      //2. name of i. user

    fgets(temp_str, 3, stream);

    fgets(usr_name_str, usr_n3_length[i], stream2);
    usr_name3[i] = usr_name_str;      //3. name of i. user

    FULL_name[i] = usr_name1[i] + " " + usr_name2[i] + " " + usr_name3[i];
    ListBox1->Items->Add(FULL_name[i]);

    fgets(temp_str, 3, stream);

    fgets(usr_pssw_str, 6, stream);
    }
    fclose(stream2);

    Image7->Picture->LoadFromFile("images\\buttons\\us_edit_user_unactive.jpg");
    Image8->Picture->LoadFromFile("images\\buttons\\us_delete_user_unactive.jpg");
    }
    }
    Выбор пользователя:

    Код (Text):
    void __fastcall TForm7::ListBox1Click(TObject *Sender)
    {
    for(int i=0;i<ListBox1->Items->Count;i++)
    {
    if(ListBox1->Selected[i])
    {
    usr_selected = true;
    Image7->Picture->LoadFromFile("images\\buttons\\us_edit_user.jpg"); //вот здесь и вылетает
    Image8->Picture->LoadFromFile("images\\buttons\\us_delete_user.jpg");
    GlobalF_usr = usr_name1[i];
    GlobalI_usr = usr_name2[i];
    GlobalO_usr = usr_name3[i];
    GlobalPSW_usr = usr_pssw[i];
    }
    }
    }
    Код (Text):
    void __fastcall TForm7::FormClose(TObject *Sender, TCloseAction &Action)
    {
    Action = caFree;
    }
    Еще на этой форме есть кнопки "доступ"(просмотр log-файлов) и "протоколы". Эти кнопки просто перекидывают на новые почти пустые окна окна, на которых пока(еще не написал) ничего кроме загрузки картинок не происходит.

    Так вот ошибка вылетает когда я из любого окна "доступ" и "протоколы" перехожу на окно "пользователи" и выбираю в ListBox-е пользователя. Причем ошибка ОТКРЫТИЯ КАРТИНКИ вылетает, если во всех этих трех формах Action = caFree НЕТУ (в остальных во всех есть), а АКСЕСС ВИАЛЕЙШН когда в форме "пользователи" в FormClose Action = caFree ЕСТЬ, причем вылетает уже еще только на загрузке формы "пользователи". Если же Action = caFree будет в одной из форм "доступ" или "протоколы", то получаю Abstract Error!!!
     
  9. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    1. Зачем одинаковые действия на FormCreate и FormActivate?
    2. Уверен, что к моменту вызова TForm7::ListBox1Click относительный путь не был изменен? Может лучше использовать абсолютный?
     
  10. ARTHES

    ARTHES Гость

    переписал форму заново, не помогло. Код новой формы:

    Код (Text):
    //---------------------------------------------------------------------------

    #include <vcl.h>
    #pragma hdrstop

    #include "Unit72.h"

    #include "Unit73.h"
    #include "Unit74.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm72 *Form72;
    //---------------------------------------------------------------------------
    __fastcall TForm72::TForm72(TComponent* Owner)
    : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm72::FormCreate(TObject *Sender)
    {
    //
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm72::FormActivate(TObject *Sender)
    {
    Image4->Picture->LoadFromFile("images\\buttons\\us_edit_user_unactive.jpg"); //вот здесь вылетает ошибка
    Image5->Picture->LoadFromFile("images\\buttons\\us_delete_user_unactive.jpg");
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm72::ListBox1Click(TObject *Sender)
    {
    Image4->Picture->LoadFromFile("images\\buttons\\us_edit_user.jpg");
    Image5->Picture->LoadFromFile("images\\buttons\\us_delete_user.jpg");
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm72::Image8Click(TObject *Sender)
    {
    Form72->Close();
    Form73->Show();
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm72::Image9Click(TObject *Sender)
    {
    Form72->Close();
    Form74->Show();
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm72::FormClose(TObject *Sender, TCloseAction &Action)
    {
    Action = caFree;
    }
    //---------------------------------------------------------------------------
    Вылетает Access Violation, если убрать Action = caFree, то вылетает ошибка открытия картинки


    И еще: что это значит:
     
  11. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Это значит, что ты помещал компоненты на форму в процессе разработке формы, а не создавал их динамически. Судя по твоему коду, ты их и создаешь в Design Time. Кстати, на счет монопольного доступа к файлу со стороны TImage - это я ступил. Так что с путями?
     
  12. ARTHES

    ARTHES Гость

    чтобы не перегружать заново базу пользователей при каждой активации формы, а перегружать только в случае ее изменения (GlobalWAS_modified == true)


    МЫСЛЬ: я заметил, что Access Violation вылетает при каждой повторной попытке Form72->Show() из ЛЮБОЙ формы после того, как было сделано Form72->Close() при Action = caFree в TForm72::FormClose

    - может нужно потом уже не Show(), а что-то типа Open()???или Create()???
    - может я что-то не подключил?
     
  13. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--QuoteBegin-ARTHES+12:02:2007, 15:54 -->
    <span class="vbquote">(ARTHES @ 12:02:2007, 15:54 )</span><!--QuoteEBegin-->я заметил, что Access Violation вылетает при каждой повторной попытке Form72->Show() из ЛЮБОЙ формы после того, как было сделано Form72->Close() при Action = caFree в TForm72::FormClose
    [snapback]55862" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Ну так и должно быть, т.к. Action = caFree заставляет форму разрушаться. Теперь надо ее не просто показать, а еще предварительно создать
     
  14. ARTHES

    ARTHES Гость

    вот насчет этого ты как раз и БЫЛ ПРАВ !!!

    Что-то меняет путь. Как только прописал путь абсолютный, ВСЕ ЗАРАБОТАЛО !!!!! :D

    я закомментил все Action = caFree, перестал вылетать Access Violation, прописал абсолютные пути - и все заработало. Кстати относительный путь мог поменяться при открытии базы пользователей или добавлении списка log-файлов в ListBox на форме "доступ" - и база пользователей, и log-файлы лежат у меня в других директориях !!! Это ВСЕ ОБЬЯСНЯЕТ!!! аж сам довольный, что нашли в чем дело :D !!

    С П А С И Б О О Г Р О М Н О Е



    а как ее предварительно создать?
     
  15. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--QuoteBegin-ARTHES+12:02:2007, 16:18 -->
    <span class="vbquote">(ARTHES @ 12:02:2007, 16:18 )</span><!--QuoteEBegin-->а как ее предварительно создать?
    [snapback]55864" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Что-то типа:
    Код (Text):
    TForm* pForm= new TForm( this);
    pForm->ShowModal();
    Если приоритетом является экономия памяти, то формы лучше разрушать (Action = caFree).
     
  16. ARTHES

    ARTHES Гость

    ВСЕ ПОНЯЛ!

    ну вообще у меня здесь экономия памяти приоритетом не является (ну это пока :D ), но все равно спасибо. В будущем, я думаю пригодится!!!
     
  17. Barmutik

    Barmutik Гость

    Что-то мне кажется что проблема с путями .. а Вы не пробовали абсолютные пути указать а не относительные ?

    А что будет если Вашу программу по линку запустят ? И текущая папка будет абы куда указывать?
     
  18. ARTHES

    ARTHES Гость

    ПРОБЛЕМА УЖЕ РЕШЕНА

    все дело было в путях: нужно абсолютные пути указывать, а не относительные.

    ВСЕМ СПАСИБО !!!
     
  19. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--QuoteBegin-ARTHES+12:02:2007, 17:10 -->
    <span class="vbquote">(ARTHES @ 12:02:2007, 17:10 )</span><!--QuoteEBegin-->ПРОБЛЕМА УЖЕ РЕШЕНА
    [snapback]55890" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Это до тех пока, пока софтину в другую папку не установят :D. Ну ничего, постоянное изобретение велосипедов - характерная черта большинства программистов
     
  20. ARTHES

    ARTHES Гость

    не, там задача другая: изготавливается целый аппарат с сенсорным экраном, управляемый программоой, которую я собственно и пишу. Те, кто будут использовать аппарат ничего переустанавливать не будут, да и доступа то у них не будет, а вообще они и знать не будут, где там че установлено. Можно конечно записать в файл текущую директорию и считывать при каждой загрузке программы, но честно говоря нету времени всем этим заниматься - сроки и поджимают.
    Короче всем спасибо за помощь.
     
Загрузка...

Поделиться этой страницей