Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Перезапись файла


Автор: s1lver 6.5.2009, 15:57
В текстовом файле есть два ключевых слова (key1,key2), после которых идут в столбик слова. После первого ключа должно быть не больше 10 слов, остальные хранятся после второго ключа. Пользователь выбирает нужное слово  и оно перезаписывает предыдущие варианты, при этом не выбранные переходят под второй ключ. 

Подскажите как можно реализовать это?

Код

key1

слово1
слово2
слово3
слово4
слово5
слово6
слово7
слово8
слово9
слово10

key2
слово
слово
слово
слово
слово
слово
слово
слово

Автор: artsb 6.5.2009, 17:57
Цитата(s1lver @  6.5.2009,  15:57 Найти цитируемый пост)
Пользователь выбирает нужное слово  и оно перезаписывает предыдущие варианты

Это не понятно. Где и как пользователь выбирает? И что вы подразумеваете в данном случае под словом "выбирает"? И как выбранное слово, перезаписывает предыдущие?

Автор: s1lver 6.5.2009, 19:44
Цитата

Где и как пользователь выбирает?


Это я и сам еще не представляю как smile . Возможно чекбоксами или из комбобоксов.

Цитата

И что вы подразумеваете в данном случае под словом "выбирает"?


т.е, на примере чекбокса, значение чекбокс1  пишется в первым под key1, в случае превышения кол-ва элементов под key1, лишние переносятся под key2

 smile 
Цитата


И как выбранное слово, перезаписывает предыдущие? 


было

Код

key1
слово1
слово2
слово3
слово4
слово5
слово6
слово7
слово8
слово9
слово10

key2
слово11
слово12
слово13
слово14
слово15
слово16
слово17
слово18


после перезаписи

Код

key1
слово11
слово12
слово18
слово4
слово5
слово6
слово7
слово8
слово9
слово10

key2
слово1
слово2
слово13
слово14
слово15
слово16
слово17
слово3


вот как-то так

Автор: artsb 6.5.2009, 20:47
Стало немного ясней smile

Я бы сделал это через два TStringList'а. 1-ый это key1, 2-ой - key2. Прочитать из файла и распихать строки по разным StringList'ам, я думаю, труда не составит. Далее как-то реализовываете к ним доступ пользователя. Псоле того как пользователь выбрал строку из key1, добавляете в 1-ый StringList то что нужно (как я понял в начало. Значит юзаете Insert), а все строки имеющие индекс 10 и более перемещаете во 2-ой StringList и удаляете из первого. Сохранить, я думаю, тоже труда не составит.

ЗЫ если бы вы подробнее описали задачу, может и нацарапал бы кода, а так...

Автор: s1lver 6.5.2009, 21:11
 smile  Уже пробую.

Цитата

ЗЫ если бы вы подробнее описали задачу, может и нацарапал бы кода, а так...


В том и проблема, толком объяснить не могу что надо ....

Автор: artsb 6.5.2009, 22:52
Цитата(s1lver @  6.5.2009,  21:11 Найти цитируемый пост)
В том и проблема, толком объяснить не могу что надо .... 

 smile 

Автор: math64 7.5.2009, 12:57
Нужен именно этот формат файла? Удобнее было бы так:
Код

[key]
word1=слово1
word2=слово2
word3=слово3
word4=слово4
word5=слово5
word6=слово6
word7=слово7
word8=слово8
word9=слово9
word10=слово10

[key2]
word11=слово11
word12=слово12
word13=слово13
word14=слово14
word15=слово15
word16=слово16
word17=слово17
word18=слово18

Используя TIniFile.

Автор: A5uKa 7.5.2009, 13:15
ini

Код

TIniFile *Ini = new TIniFile("c:/options.ini");
//Открыть:
Edit1->Text = Ini->ReadString("Edits","Edit1","Def");
Edit2->Text = Ini->ReadString("Edits","Edit2","Def");
delete Ini;

TIniFile *Ini = new TIniFile("c:/options.ini");
//Сохранить:
Ini->WriteString("Edits","Edit1",Edit1->Text);
Ini->WriteString("Edits","Edit2",Edit2->Text);
delete Ini;


edits - то что в квадоатных скобках
edit1,2 - слова№
Def - по умолчанию , можно NULL

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)