Форум: "Начинающим";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];
ВнизРабота со списком. Что к чему? Найти похожие ветки
← →
Герасим (2007-05-06 21:25) [0]Добрый вечер!
Помогите решить задачу, которую решаю не один день.
На форме расположены два компонента Listbox. В каждом свои значения.
Как можно сохранить эти два листбокса в один файл, а потом обратно загрузить файл в два листбокса?
Помогите пожалуйста!
← →
default © (2007-05-06 21:27) [1]всё потому что мало решаешь
день-другой и всё получится! иначе в нашем деле никак!
← →
{RASkov} © (2007-05-06 21:32) [2]> [0] Герасим (06.05.07 21:25)
Ты покажи ход своих мыслей, авось и помогут.... иначе.... вариантов куча.
А почему в два файла не хочется? Вообще все просто будет...
← →
Герасим (2007-05-06 21:35) [3]Это решение длится уже неделю :(
Не получается потому, что начинающий.
В два файла не охота. Хочу реализовать что-то наподобие сохранения параметров. Сохранить эти два листбокса в два разных файла для меня просто.
вот код:
procedure TForm1.Button1Click(Sender: TObject);
var
List1, List2, MyList: TStringList;
i,j: integer;
begin
List1:= TStringList.Create;
List2:= TStringList.Create;
MyList:=TStringList.Create;
for i:=0 to listbox1.Items.Count-1 do
List1.Add(listbox1.Items.Strings[i]);
for i:=0 to listbox1.Items.Count-1 do
List2.Add(listbox2.Items.Strings[j]);
MyList.Add(list1.Strings[i]+list2.Strings[j]);
if savedialog1.Execute then
begin
MyList.SaveToFile(savedialog1.FileName);
end;
list1.Free;
list2.Free;
MyList.Free;
end;
← →
default © (2007-05-06 21:43) [4]всё просто до ужаса
есть ListBox1.Lines и есть ListBox2.Lines
создаёшь commonList: TStringList
и
сохранение
commonList.Add(IntToStr(ListBox1.Lines.Count))
for i := 0 to ListBox1.Lines.Count-1 do commonList.Add(ListBox1.Lines(i));
for i := 0 to ListBox2.Lines.Count-1 do commonList.Add(ListBox2.Lines(i));
commonList.SaveToFile("...");
commonList.Clear;
загрузка
commonList.LoadFromFile("...");
for i := 1 to StrToInt(commonList(0)) do ListBox1.Lines.Add(commonList(i));
for i := StrToInt(commonList(0))+1 to commonList.Count-1 do ListBox2.Lines.Add(commonList(i));
commonList.Clear;
примерно так(может где чё оптимизируешь, на твоё усмотрение это)
← →
{RASkov} © (2007-05-06 21:45) [5]или так:
const SRazd = "[SEPARATORLISTS]";
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
procedure FillLists;
var N: Integer;
begin
for N := 0 to 10 do ListBox1.Items.Add("Item?"+IntToStr(N));
for N := 0 to 10 do ListBox2.Items.Add("Str?"+IntToStr(N));
end;
procedure LoadLists;
var F: TextFile; S: String; FFirst: Boolean;
begin
AssignFile(F, "Lists.ddd");
Reset(F); FFirst:=True;
try
while not EOF(F) do begin
ReadLn(F, S);
if FFirst and (S=SRazd) then begin FFirst:=False; Continue; end;
if FFirst then ListBox1.Items.Add(S) else ListBox2.Items.Add(S)
end;
finally CloseFile(F); end;
end;
begin
if FileExists("Lists.ddd") then LoadLists else FillLists;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var F: TextFile; N: Integer;
begin
AssignFile(F, "Lists.ddd");
ReWrite(F);
try
for N := 0 to ListBox1.Count-1 do WriteLn(F, ListBox1.Items[N]);
WriteLn(F, SRazd);
for N := 0 to ListBox2.Count-1 do WriteLn(F, ListBox2.Items[N]);
finally CloseFile(F); end;
end;
ну и последнея строка из [4]....
← →
{RASkov} © (2007-05-06 21:46) [6]> последнея
*последняя :)
← →
Герасим (2007-05-06 21:49) [7]Спасибо больщое!
Разобрался наконец-то.
Да это, блин, просто оказывается!
Спасибо ещё раз!
← →
Vasiliy (2007-05-06 21:58) [8]Самому стало интересно :)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
ListBox2: TListBox;
btSave: TButton;
btLoad: TButton;
btClear: TButton;
procedure btSaveClick(Sender: TObject);
procedure btLoadClick(Sender: TObject);
procedure btClearClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btSaveClick(Sender: TObject);
var
Stream: TStream;
C: Integer;
begin
Stream := TFileStream.Create("listboxes", fmCreate);
try
C := ListBox1.Count;
Stream.Write(C, SizeOf(C));
ListBox1.Items.SaveToStream(Stream);
ListBox2.Items.SaveToStream(Stream);
finally
Stream.Free;
end;
end;
procedure TForm1.btLoadClick(Sender: TObject);
var
Stream: TStream;
C, I: Integer;
List: TStringList;
begin
Stream := TFileStream.Create("listboxes", fmOpenRead);
List := TStringList.Create;
try
Stream.Read(C, SizeOf(C));
List.LoadFromStream(Stream);
For I := 0 to C - 1 do ListBox1.Items.Add(List.Strings[I]);
For I := C to List.Count - 1 do ListBox2.Items.Add(List.Strings[I]);
finally
Stream.Free;
List.Free;
end;
end;
procedure TForm1.btClearClick(Sender: TObject);
begin
ListBox1.Clear;
ListBox2.Clear;
end;
end.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.059 c