Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запись выбранных параметров в файл. 
V
    Опции темы
mum1k1
Дата 17.7.2008, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 17.7.2008

Репутация: нет
Всего: нет



Понадобилась такая задача, на форме имеется несколько CheckBox-ов и RadioGroup-ов, пользователь должен их выбирать и по нажатию кнопки они должны записываться в текстовом файле на 35 строке, 53 положении курсора. Подскажите пожалуйста всевозможные варианты.
PM MAIL ICQ   Вверх
aleksh
Дата 17.7.2008, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 609
Регистрация: 8.7.2008

Репутация: 3
Всего: 13



правильно понял: значения чекбоксов в виде строки в файл, и чтобы номер строки 35, и с радиобуттонами также, только строка 53?
тогда: формируем строки со значениями, загружаем файл в стринглит, заносим данные (.strings[xx]:='xxx' например), сохраняем стринглист в файл
PM MAIL   Вверх
mum1k1
Дата 17.7.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 17.7.2008

Репутация: нет
Всего: нет



Почти, только и чекбоксы и радиобуттоны в одно место должны записываться. 
Притом каждый раз после открытия файла, после 35 строки, 53 курсора, строка должна быть чистой, 
так как дальше должны идти выбранные параметры.
пример:
файл "startCS-LAN.txt"
[1]fdgh
[2]dfhg
[3]dhg
[4]dfhg
...
[35]start C:\Games\Half-Life\hl.exe -steam -game cstrike' '(сюда должны записываться выбранные параметры)
А нельзя ли по подробней описать работу с файлами, потому что вообще как то идей нет(
PM MAIL ICQ   Вверх
Alkash
Дата 17.7.2008, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


коллекционер жизни
**


Профиль
Группа: Участник
Сообщений: 516
Регистрация: 5.7.2004
Где: /

Репутация: нет
Всего: нет





--------------------
Подпись >> /dev/null
PM MAIL ICQ MSN   Вверх
mum1k1
Дата 17.7.2008, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 17.7.2008

Репутация: нет
Всего: нет



эмс...тока чёта сыль не работает
PM MAIL ICQ   Вверх
aleksh
Дата 17.7.2008, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 609
Регистрация: 8.7.2008

Репутация: 3
Всего: 13



извеняюсь, но опять уточню: строка 35-я, и чтобы символов в строке не больше 53-х? а как именно формировать строку со значениями -боксов, -бутонов определено?

касательно работы с файлом, если о том что писал выше, то:
Код

var
  ...
  sl: tstringlist;
  s: string; // здесь сохраняемые значения;
begin
  ...
  sl:=tstringlist.create;
  sl.loadfromfile('name.txt');
  ... // формируем s
  sl.strings[35]:=copy(s,1,53);
  sl.savetofile('name.txt');
  ...
end;

PM MAIL   Вверх
mum1k1
Дата 17.7.2008, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 17.7.2008

Репутация: нет
Всего: нет



насчёт строки то всё праильно, 35 строка, но запись должна идти не максимум 53 символа, а наоборот, после 53 символа, так как до 53 символа идёт сам запуск, а потом уже должны идти выбранные настройки. 
И кстати, как должна формироваться переменная "s", путём case...of, или как? 

PM MAIL ICQ   Вверх
aleksh
Дата 17.7.2008, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 609
Регистрация: 8.7.2008

Репутация: 3
Всего: 13



если после 53-й, то ... sl.strings[35]:=sl.strings[35]+' '+s;
а вот с формированием интересней. причем здесь case, мы же пишем бинарные данные. а можно по-подробней сколько -буттонов да -боксов и как должна строка, в итоге, выглядеть
p.s. эх, вот если бы были бы эти -буттоны и -боксы массивом... :)
PM MAIL   Вверх
mum1k1
Дата 17.7.2008, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 17.7.2008

Репутация: нет
Всего: нет



Я вот тоже сижу и думаю про масивы =) 
Такс, насчёт параметров...
имеются три чекбокса, один радиохэд с выбором одного из двух параметров,  и один комбобокс с выбором трёх параметров. Вот, выбранные должны заноситься в бинарник...
Сижу и думаю, хз как их туда заносить =\\
PM MAIL ICQ   Вверх
aleksh
Дата 17.7.2008, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 609
Регистрация: 8.7.2008

Репутация: 3
Всего: 13



все еще не понятно как должна выглядеть, в итоге, строка
если предположить что так: чекбоксы, без пробелов (true/false), радиобуттоны, в конце - значение комбобокса
на вскидку:
Код

...
if checkboxN.checked then //да и radiobutton так же
  s:=s+'0'                             //но что за радиохед, может радиогруп?
else
  s:=s+'1';

интересней с комбобоксом. нужно именно бинорное значение? если да можно так 0 - первый пункт, 1 - второй, значение отсутсвует - третий пункт
Код

if combobox.itemindex<2 then
  s:=s+inttostr(combobox.itemindex);

PM MAIL   Вверх
mum1k1
Дата 17.7.2008, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 17.7.2008

Репутация: нет
Всего: нет



Вот, вместо выделенного поля должны вписыватсья параметры,
тоесть курсор должен уже стоять на 35 строчке, 53 символе.
Параметры все вот:

CheckBox1 
CheckBox2
CheckBox3

RadioGroup1 (выбираем один из двух параметров)

ComboBox1 (выбираем один из трёх параметров) 




Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  forma.JPG 35,48 Kb
PM MAIL ICQ   Вверх
aleksh
Дата 18.7.2008, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 609
Регистрация: 8.7.2008

Репутация: 3
Всего: 13



предпологаем что файл уже есть, и 35-ой строкой у него "... -game cstrike"
тогда загружаем в стринглист, потом
Код

...
//s - пустая строка
if checkbox1.checked then
  s:=s+'-gl';
if checkbox2.cheked then
  s:=s+' noforcemaccel'
//если чекбокс не выбран, в строку ничего не подстовляется, если я правильно понял для того они и задуманы
...
case radiogroup.itemindex of
  0: s:=s+' -w 800';
  1: s:=s+' что-то там';
  ...
  n: s:=s+' что-то еще';//если вдруг придется разростись
end;
//выбирается же только одно из значений
//если только одно из двух, то можно проще
if radiogroup.itemindex=0 then
  s:=s+' -w 800'
else
  s:=s+' что-то там';
...
s:=s+' '+combobox.text;
...
sl.strings[35]:=sl.strings[35]+' '+s;
sl.savetofile('name.txt');
...


не забываем пробелы, и тогда будет радость smile
а чем обусловлен выбор радиогруп и комбобокса?
по идее можно будет сделать интерфей по проще (менее загруженым)

Это сообщение отредактировал(а) aleksh - 18.7.2008, 09:46
PM MAIL   Вверх
mum1k1
Дата 18.7.2008, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 17.7.2008

Репутация: нет
Всего: нет



Блин. Написал всё. 35 строчка закладывается в переменную и просто добовляется по ходу добавления параметров, но на записи в файл выдаёт ошибку =(



Код

var

s:String;
fl:TStringList;

begin

fl:=TStringList.Create;
fl.LoadFromFile('C:\Documents and Settings\User\Desktop\010.txt');


s:='start C:\Games\Half-Life\hl.exe -steam -game cstrike -gl';

//начинаем проверять выбранные значения
if CheckBox1.Checked then
 s:=s+' -noforcemaccel';
if CheckBox2.Checked then
 s:=s+' -noforcemparms';
if CheckBox3.Checked then
 s:=s+' -noforcemspd';

if RadioGroup1.ItemIndex=0 then
 s:=s+' ex_interp 0.1'
else s:=s+' ex_interp 0.001';

case radiogroup2.ItemIndex of
 0: s:=s+' -w 640';
 1: s:=s+' -w 800';
 2: s:=s+' -w 1024';
 3: s:=s+' -w 1280';
end;
//начинается запись в файл
fl.strings[35]:=s;;
fl.SaveToFile('C:\Documents and Settings\User\Desktop\010.txt');
fl.Free
end;


Это сообщение отредактировал(а) mum1k1 - 18.7.2008, 11:45

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  untitled1.JPG 15,22 Kb
PM MAIL ICQ   Вверх
aleksh
Дата 18.7.2008, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 609
Регистрация: 8.7.2008

Репутация: 3
Всего: 13



загружать стринглист можно и после того как строка s сформирована, но это так, "к слову", а по-поводу ошибки: говорит что в стринглисте строк меньше 36 (строки в листе нумеруются с 0), если эта строка в файле последняя, то просто исправь номер строки в fl.strings[35]:=s на 34, если строк в файле меньше, то почему в условии уточнялось что именно 35, а файл не полный, не прописанные строки должны быть пустыми?
а по-хорошему надо себя (и не только) проверять, в данном случае например так:
Код

if fl.count>33 then
  fl.strings[34]:=s
else
  showmessage('в файле не хватает строк');

еще можно предусмотреть отсутствие файла, но это опять "к слову будет сказанно"

Это сообщение отредактировал(а) aleksh - 18.7.2008, 13:02
PM MAIL   Вверх
mum1k1
Дата 18.7.2008, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 17.7.2008

Репутация: нет
Всего: нет



хм. проверка выдаёт что нехватает строк.
но именно в том положении, где начинается запись, курсор стоит в положении 35 строки, 53 символа...
вот, можешь сам посмотреть файл

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  010.txt 1,25 Kb
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0573 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.