Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.04.2010, 23:37
Faraon Faraon вне форума
Прохожий
 
Регистрация: 28.04.2010
Сообщения: 4
Репутация: 10
Печаль Помогите с Delphi!

Здравствуйте, проблема вот какая имеется форма, на которой находятся 3-и ComboBox-а, один ListBox и кнопка «Сохранить»
При запуске формы активен только ComboBox1 после того как будет выбрано одно из значений (кол-во значений 2), активируется ComboBox2 в нем доступно, если выбран 0 то 4 пункта, если 1 то 6, после выбора строки ComboBox2 активируется ComboBox3 в него подгружаются строки из текстового файла, которые тоже зависят от выбора в ComboBox1 и 2 (baz_PR.rtt).
В зависимости от выбранных в ComboBox-ах строк в ListBox грузятся данные из текстового файла (baz_PO.rtt)
Теперь, сама суть:
Кнопку сохранить я не долго думая прописал так:
Код:
procedure TForm1.Button4Click(Sender: TObject);
var
 AFile: TextFile;
 C, i, z,v1,v2,v3 : Integer;
  t:string;
begin
 AssignFile(AFile,dir+'BAZA\baz_PO.rtt');
 Rewrite(AFile);

 begin
  z:=0;
  C:= ListBox1.Items.Count;
  for i := 1 to C do
   begin
    t:=ListBox1.Items.Strings[z];
     WriteLn(AFile, '[',t,']');
    v1:=ComboBox1.ItemIndex;
     WriteLn(AFile, 'tip =', v1);
    v2:=ComboBox2.ItemIndex;
     WriteLn(AFile, 'vid =', v2);
    v3:=ComboBox2.ItemIndex;
     WriteLn(AFile, 'pro =', v3);
    z:=z+1;
   end;
 CloseFile(AFile);

 end;
end;

И теперь возникла проблема с загрузкой данных из файлов по категориям указанным ComboBox-ами.
Не могу никак придумать, как организовать выборку из текстового файла, если можно то приведите примеры кода.

Последний раз редактировалось Faraon, 29.04.2010 в 20:46.
Ответить с цитированием
  #2  
Старый 02.05.2010, 21:55
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

А не хотите через IniFile это организовать?
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
 IniFile: TIniFile;
 i: Integer;
begin
 IniFile := TIniFile.Create('c:\test.rtt');
 IniFile.ReadSection('ListBox1',ListBox1.Items);
 for i := 0 to ListBox1.Count-1
 do ListBox1.Items.Strings[i] := IniFile.ReadString('ListBox1',ListBox1.Items.Strings[i],'');

 IniFile.ReadSection('ComboBox1',ComboBox1.Items);
 for i := 0 to ComboBox1.Items.Count-1
 do ComboBox1.Items.Strings[i] := IniFile.ReadString('ComboBox1',ComboBox1.Items.Strings[i],'');

 IniFile.ReadSection('ComboBox2',ComboBox2.Items);
 for i := 0 to ComboBox2.Items.Count-1
 do ComboBox2.Items.Strings[i] := IniFile.ReadString('ComboBox2',ComboBox2.Items.Strings[i],'');

 IniFile.ReadSection('ComboBox3',ComboBox3.Items);
 for i := 0 to ComboBox3.Items.Count-1
 do ComboBox3.Items.Strings[i] := IniFile.ReadString('ComboBox3',ComboBox3.Items.Strings[i],'');

 IniFile.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 IniFile: TIniFile;
 i: Integer;
begin
 IniFile := TIniFile.Create('c:\test.rtt');
 for i := 0 to ListBox1.Count-1
 do IniFile.WriteString('ListBox1',IntToStr(i),ListBox1.Items[i]);

 for i := 0 to ComboBox1.Items.Count-1
 do IniFile.WriteString('ComboBox1',IntToStr(i),ComboBox1.Items[i]);

 for i := 0 to ComboBox2.Items.Count-1
 do IniFile.WriteString('ComboBox2',IntToStr(i),ComboBox2.Items[i]);

 for i := 0 to ComboBox3.Items.Count-1
 do IniFile.WriteString('ComboBox3',IntToStr(i),ComboBox3.Items[i]);

 IniFile.Free;
end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 02.05.2010, 22:15
Аватар для Bars1992
Bars1992 Bars1992 вне форума
Активный
 
Регистрация: 24.04.2010
Адрес: Украина, Кременчуг
Сообщения: 249
Репутация: 22
По умолчанию

Страдалецъ прав. Почитай про ИНИ файлы там все легко и просто. Идеально подходит для твоего случия.
__________________
Не твори зла, и жизнь повернется к тебе передом
Ответить с цитированием
  #4  
Старый 02.05.2010, 22:39
Faraon Faraon вне форума
Прохожий
 
Регистрация: 28.04.2010
Сообщения: 4
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
А не хотите через IniFile это организовать?
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
 IniFile: TIniFile;
 i: Integer;
begin
 IniFile := TIniFile.Create('c:\test.rtt');
 IniFile.ReadSection('ListBox1',ListBox1.Items);
 for i := 0 to ListBox1.Count-1
 do ListBox1.Items.Strings[i] := IniFile.ReadString('ListBox1',ListBox1.Items.Strings[i],'');

 IniFile.ReadSection('ComboBox1',ComboBox1.Items);
 for i := 0 to ComboBox1.Items.Count-1
 do ComboBox1.Items.Strings[i] := IniFile.ReadString('ComboBox1',ComboBox1.Items.Strings[i],'');

 IniFile.ReadSection('ComboBox2',ComboBox2.Items);
 for i := 0 to ComboBox2.Items.Count-1
 do ComboBox2.Items.Strings[i] := IniFile.ReadString('ComboBox2',ComboBox2.Items.Strings[i],'');

 IniFile.ReadSection('ComboBox3',ComboBox3.Items);
 for i := 0 to ComboBox3.Items.Count-1
 do ComboBox3.Items.Strings[i] := IniFile.ReadString('ComboBox3',ComboBox3.Items.Strings[i],'');

 IniFile.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 IniFile: TIniFile;
 i: Integer;
begin
 IniFile := TIniFile.Create('c:\test.rtt');
 for i := 0 to ListBox1.Count-1
 do IniFile.WriteString('ListBox1',IntToStr(i),ListBox1.Items[i]);

 for i := 0 to ComboBox1.Items.Count-1
 do IniFile.WriteString('ComboBox1',IntToStr(i),ComboBox1.Items[i]);

 for i := 0 to ComboBox2.Items.Count-1
 do IniFile.WriteString('ComboBox2',IntToStr(i),ComboBox2.Items[i]);

 for i := 0 to ComboBox3.Items.Count-1
 do IniFile.WriteString('ComboBox3',IntToStr(i),ComboBox3.Items[i]);

 IniFile.Free;
end;
Это не немного тот вариант сохранения, который необходим
Сдесь проблема в самом сохранении, а в методе загрузки, при выборе параметров ComboBox(1,2,3), они должны запоминается для поля ListBox1, а при выборе из ЭТИХ тех же значений в ComboBox(1,2,3) в ListBox1 должны выводится строки соответствующие им.
Ответить с цитированием
  #5  
Старый 02.05.2010, 22:47
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Не буду спорить, я предложил оптимальный вариант, адаптировать под свою задачу вы уже должны сами. Но то, что вы там изначально пытаетесь сделать, вообще с трудом понимаю поддается, а потому нерационально.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 02.05.2010, 22:50
Faraon Faraon вне форума
Прохожий
 
Регистрация: 28.04.2010
Сообщения: 4
Репутация: 10
По умолчанию

Спасибо буду пытатся организовать запись и чтение подругому....
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:47.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025