ورود

View Full Version : ذخیره محتویات کل یک ListView در یک فایل متنی (فوری)



راحله سعادتی
یک شنبه 28 اسفند 1384, 19:06 عصر
من تو پروژه ام از یک ListView استفاده کرده ام که دارای چندین ستون می باشد با بیش از 100 الی 800 رکورد .

حالا چه جوری کل محتویات ListView را در یک فایل متنی ذخیره کنم

به طور مثال ستون اول مقدارش A است و ستون دوم مقدارش B است

حالا نحوه ذخیره در فایل متنی به صورت زیر باشد .
A B

یا حالا هر جوره دیگه فقط ذخیره کنه

Masoud_Niyazi
جمعه 04 فروردین 1385, 12:42 عصر
شما ابتدا یک متغییر از نوع TextFile تعریف کنید که میتونید بوسیله فرامین کار با فایل ها انو باز کرده و یا مقادیر اونو خونده و یا در اون چیزهایی بنویسید
مثلا Openfile , readfile, writefile , closefile,Rewrite که دلفی خودش توضیح خوبی براب استفاده از اونا داره و بعد می تونید از 2 تا حلقه For تودرتو اولی برای تعداد سطرها و دومی برای تعداد ستونها استفاده کنید for i:=0 to listview1.items.count-1 do , for j:=0 to X do
X : تعداد ستونها
وحالا میتونید در حلقه اول بگید Text := listview1.items[i]r و در حلقه دوم مینویسید
Text := text + ' ' +listview1.items[i].subitems[j]r
ودر هر بار خروج از این 2 حلقه شما میتونید مقداری رو که درون متغییر Text هست رو در درون فایل ذخیره کنید

دلفــي
یک شنبه 22 مهر 1403, 08:19 صبح
uses
uses ComCtrls, Types, StrUtils;


procedure ListViewSaveToFile(ListView: TListView; const FileName: string);


procedure AddTextToLine(var Line: string; const Text: string);
begin
Line := Line + Text + #9;
end;


procedure MoveCompletedLineToList(const Strings: TStringList; var Line: string);
begin
Strings.Add(System.Copy(Line, 1, Length(Line)-1));//remove trailing tab
Line := '';
end;


var
Strings: TStringList;
LatestLine: string;
i, j: Integer;


begin
LatestLine := '';


Strings := TStringList.Create;
try
for i := 0 to ListView.Items.Count-1 do begin
AddTextToLine(LatestLine, ListView.Items[i].Caption);
for j := 0 to ListView.Items[i].SubItems.Count-1 do begin
AddTextToLine(LatestLine, ListView.Items[i].SubItems[j]);
end;
MoveCompletedLineToList(Strings, LatestLine);
end;
Strings.SaveToFile(FileName, TEncoding.UTF8);
finally
Strings.Free;
end;
end;


procedure ListViewLoadFromFile(ListView: TListView; const FileName: string);
var
Strings: TStringList;
i, j: Integer;
Fields: TStringDynArray;
Item: TListItem;
begin
Strings := TStringList.Create;
try
Strings.LoadFromFile(FileName);
ListView.Clear;
for i := 0 to Strings.Count-1 do begin
Fields := SplitString(Strings[i], #9);
Item := ListView.Items.Add;
Item.Caption := Fields[0];
for j := 1 to high(Fields) do begin
Item.SubItems.Add(Fields[j]);
end;
end;
finally
Strings.Free;
end;
end;