работа с файлом

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем rossik, 14 май 2008.

  1. rossik

    rossik Гость

    Помогите, пожалуйста!
    Есть такая задача: дана программа, которая работает с паролями. Все пароли длиной 10 символов записываются в отдельный файл, я его назвала "paroli.txt". Когда появляется новый пароль (вводиться через форму, у меня это Form5->Edit1), программа должна проверять, не записан ли в файле paroli этот новый пароль. Если уже имеется такой, его использовать запрещается (у меня с помощь.формы 10:Form10->ShowModal()и т.д.), если такого пароля нет, он записывается в этот файл.
    Вот, что я из себя выжила:
    Сначала создаю файл:
    Код (Text):
    if(!FileExists("paroli.txt"))
    { ofstream fout("paroli.txt",ios::out|ios::binary);
    fout<<"";
    fout.close();
    }
    Потом работаю с файлом:
    Код (Text):
    if(Form5->Edit1->Text.Length()==10)
    {
    ofstream fout("paroli.txt",ios::in|ios::out|ios::binary);
    if(Form5->Edit1->Text.c_str()==fin>>buf)
    Form10->ShowModal();
    else
    // смещение к концу файла
    fout.seekp(0,ios::end);
    fout<<Form5->Edit1;
    fout<<" ";
    }
    fout.close();
    fin.close();
    Для начала хотела, чтобы сравнивала с одним словом, но даже это не работает(((
     
  2. Anton Chik

    Anton Chik Гость

    кидаешь на форму ListBox1 (после отладки можешь сделать Visible=false)
    потом навешай куда-нить
    Код (Text):
    ListBox1->Items->LoadFromFile("paroli.txt");
    if(ListBox1->Items->IndexOf(Form5->Edit1)!=-1)ShowMessage("Такой пароль уже был!!!");
    else ListBox1->Items->Add(Form5->Edit1);// добавляем новый пароль
    ListBox1->Items->SaveToFile("paroli.txt");
    сам не компилил, но думаю смысл понятен...
     
  3. rossik

    rossik Гость

    Спасибо!Смысл понятен, но вылезает ошибка на последней строчке...в файл не записывает. Может что-то с типами данных, не знаете?Никогда не имела дела с SaveToFile...
     
  4. KoMaTozZz

    KoMaTozZz Гость

    Вот.. попробуйте это. Как вам такой подход к выполнению задачи? =)
    У меня вроде корректно работает.
    Только вот проверку на файл перед записью не делал,уж сами,думаю,сможете)



    #include "inifiles.hpp" // НЕОБХОДИМО!
    #include "fstream.h" // ну и это не забудьте

    TStringList* list;
    TIniFile* ini; // глобальные

    //=====BEGIN (OnCreateForm)===============

    ExePath = GetCurrentDir(); //мало ли, может рабочий каталог смениться...

    //=======END (OnCreateForm)===============

    // ================BEGIN(функция записи пароля в файл)===================
    //называйте как хотите, можете в паблик описать,или в обработчик. Лучше в паблик=)
    // void TForm1::WritePass()

    ini=new TIniFile(ExePath + "\\paroli.txt");
    list=new TStringList;
    list->LoadFromFile(ExePath + "\\paroli.txt");
    list->Values[num_items] = Form5->Edit1->Text;
    list->SaveToFile(ExePath + "\\paroli.txt");
    delete ini,list;

    // ================END(функция записи пароля в файл)===================


    //======================BEGIN(OnActivate)========================

    ifstream proverka((ExePath+"\\paroli.txt").c_str());
    if(proverka.good())
    {
    proverka.close();
    ini=new TIniFile(ExePath+"\\paroli.txt");
    list=new TStringList;
    list->LoadFromFile(ini->FileName);
    ListBox1->Items->Text = list->Text;
    delete list,ini;
    }
    else
    {
    proverka.close();
    ShowMessage("Файл отсутствует");
    }
    num_items = ListBox1->Items->Count;

    //=======================END(OnActivate)========================

    //=====================BEGIN(OnClick(Добавить))========================

    ini=new TIniFile(ExePath+"\\paroli.txt");
    list=new TStringList;
    list->LoadFromFile(ini->FileName);
    for(a=0;a<=ListBox1->Items->Count;a++)
    {
    if(list->Values[a] == Form1->Edit1->Text)
    {
    no_ident = 0;
    a=ListBox1->Items->Count;
    }
    else
    no_ident = 1;
    }
    if(no_ident == 1)
    {
    list->Values[num_items] = Form1->Edit1->Text;
    ListBox1->Items->Add(IntToStr(num_items) + '=' + Edit1->Text);
    WritePass();
    num_items++;
    }
    else
    ShowMessage("Пароль был");
    delete list,ini;

    //======================END(OnClick(Добавить))========================

    И не забудьте ещё глобально
    AnsiString ExePath;
    int a,num_items,no_ident;
     
Загрузка...
Похожие Темы - работа файлом
  1. garri671
    Ответов:
    0
    Просмотров:
    52
  2. Novice
    Ответов:
    0
    Просмотров:
    1.010
  3. studentrtf
    Ответов:
    1
    Просмотров:
    1.565
  4. Wolfises
    Ответов:
    2
    Просмотров:
    2.101
  5. alekssgor
    Ответов:
    0
    Просмотров:
    2.405

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