1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Opendialog и Ofstream

Тема в разделе "С и С++", создана пользователем amdk6, 22 июн 2008.

  1. amdk6

    amdk6 Гость

    Репутация:
    0
    Добрый день, прошу помочь по поводу OpenDialog-a и потоков.
    К кнопке прописан код создания и записи некого текста в файл. Работает сколько угодно раз пока не задействован OpenDialog. Если открыть OpenDialog и выбрать какой-либо файл, кнопка перестает выполнять прописанный к ней код.

    Код для наглядности:

    Код:
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    OpenDialog1->Execute();
    Edit1->Text = OpenDialog1->FileName;		
    }
    
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    ofstream out("data.bat");
    
    out.write("Alpha", 5);
    
    out.close();
    }
     
  2. WoodooMan

    WoodooMan Гость

    Репутация:
    0
    а обработчик какой кнопки перестает работать, а ты трассировал код, что там творится...
     
  3. amdk6

    amdk6 Гость

    Репутация:
    0
    Button2Click, еще не понятно почему любой другой код, например

    Код:
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    Edit1->Clear();
    }
    , работает нормально, а как дело заходит про запись в файл то отказывается.
     
  4. WoodooMan

    WoodooMan Гость

    Репутация:
    0
    погоди, т.е. если ты записываешь имя файла в эдит, у тебя перестает писать данные в файл? они по идее никак не связаны...
     
  5. etc

    etc Гость

    Репутация:
    0
    Ошибка в 17 строке.
     
  6. amdk6

    amdk6 Гость

    Репутация:
    0
    Вот именно. Идея такая - выбираю файл через OpenDialog, а путь что появится в TEdit-е надо записать в файл. Если пишу вручную в TEdit все работает, а если выбираю файл через opendialog, уже не хочет. Я сам не вижу связи между ними, думал ошибка в моей проге, специально создал просто 1 поле TEdit, 2 кнопки и OpenDialog... тоже самое. Есть конечно вариант писать файл через указатель, как в Си, но все-таки хочю разобраться почему конфликтует с потоками.
     
  7. etc

    etc Гость

    Репутация:
    0
    Эх ... какой поток сознания, прелесть, залюбуешься ... жаль, что все бестолку ... :(
     
  8. amdk6

    amdk6 Гость

    Репутация:
    0
    К чему всю эту чюшь писать? Ты видимо такой всезнайка, из-за таких как ты форумы и пустеют. Видимо ты 222 поста только чюшью и набрал... Продуктивно товарисчь.
     
  9. etc

    etc Гость

    Репутация:
    0
    amdk6 Форумы "пустеют" от нехватки нормальных вопросов. Открытие для вас? уже 223
     
  10. amdk6

    amdk6 Гость

    Репутация:
    0
    Чем мой вопрос плох? Конкретно. Если ты думаешь что я примиком свалил сюда и написал, без того чтобы потыкать твой любимый F1 или поискать в гугле то глубоко ошибаешся.
     
  11. etc

    etc Гость

    Репутация:
    0
    Поиск - уже не плохо.
    Дык, раньше указал - см. #5, ну и конечно - http://linuxmafia.com/faq/Essays/smart-questions.html
    Я вот ваш код скопировал, откомпилировал - работает, так и где проблема?
     
  12. amdk6

    amdk6 Гость

    Репутация:
    0
    Разобрался, с флудом пополам.
     
  13. etc

    etc Гость

    Репутация:
    0
    Ну так не флудите а расскажите в чем прикол-то был.
     
  14. amdk6

    amdk6 Гость

    Репутация:
    0
    Файл создается, только щас случайно заметил, но не возле *.ехе-шки, а в той директории откуда был выбран файл через OpenDialog. (Такой феномен, уж извините, нигде не расписан).
     
  15. etc

    etc Гость

    Репутация:
    0
    :( F1 - OpenDialog1->Options = OpenDialog1->Options + [ofNoChangeDir]; и живите спокойно.
    но,
    <>
    Это к вопросу про чушь. :)
    ладно. без обид, приходите еще сюда, поможем ;)
     
  16. amdk6

    amdk6 Гость

    Репутация:
    0
    Спасибо за поддержку.
     
  17. EugenOS

    EugenOS Active Member

    Репутация:
    0
    Регистрация:
    22 июл 2007
    Сообщения:
    27
    Симпатии:
    0
    Это не феномен - меняется текущая директоря для данного приложения.

    в публичных полях формы прописать поле:
    AnsiString appPath;

    а в конструкторе формы:
    Код:
    	appPath = GetCommandLine();
    int slashPos = appPath.LastDelimiter("\\");
    appPath = appPath.SubString( 2, slashPos-1 );
    теперь к имени файла добавляем appPath и проблемы нет.
     

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