![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
с listview в файл? [D7, WinXP]
linox © (2006-09-17 14:24:00)Такой вот вопрос:
есть данные в листвью, они добавляются и удаляются. нужно что бы добавляимые данные записывались в текстовый документ (лог-файл). если это первая запись нужно програмно создать этот файл? помогите если кто может
Весь в делах (2006-09-20 16:02:00) [1]Ivolg ©
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, jpeg, ComCtrls, ImgList;
type
TForm1 = class(TForm)
lv: TListView;
procedure SaveToFile(Dir:string);
function LoadFromFile(Dir:string):boolean;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Signature,FileName:string;
implementation
uses Unit1, Unit5;
{$R *.dfm}
{------------------------------------Сохранение----------------------------}
procedure TForm1.SaveToFile(Dir:string);
var
idxItem, idxSub, IdxImage: Integer;
F: TFileStream;
pText: PChar;
sText: string;
W, ItemCount, SubCount: Word;
MySignature: array [0..7] of Char;
begin
FileName:=dir;
StrPCopy(MySignature, Signature);
F := TFileStream.Create(FileName, fmCreate or fmOpenWrite);
F.Write(MySignature, SizeOf(MySignature));
ItemCount := lv.Items.Count;
F.Write(ItemCount, SizeOf(ItemCount));
if lv.Items.Count > 0 then
for idxItem := 1 to ItemCount do
with lv.Items[idxItem - 1] do
begin
SubCount := Subitems.Count;
F.Write(SubCount, SizeOf(SubCount));
IdxImage := ImageIndex;
F.Write(IdxImage, SizeOf(IdxImage));
sText := Caption;
w := Length(sText);
pText := StrAlloc(Length(sText) + 1);
StrPLCopy(pText, sText, Length(sText));
F.Write(w, SizeOf(w));
F.Write(pText^, w);
StrDispose(pText);
if SubCount > 0 then
for idxSub := 0 to SubItems.Count - 1 do
begin
sText := SubItems[idxSub];
w := Length(sText);
pText := StrAlloc(Length(sText) + 1);
StrPLCopy(pText, sText, Length(sText));
F.Write(w, SizeOf(w));
F.Write(pText^, w);
StrDispose(pText);
end;
end;
F.Free;
end;
{------------------------------------------Загрузка-------------------------}
function TForm1.LoadFromFile(Dir:string):boolean;
var
F: TFileStream;
IdxItem, IdxSubItem, IdxImage: Integer;
W, ItemCount, SubCount: Word;
pText: PChar;
PTemp: PChar;
MySignature: array [0..7] of Char;
begin
FileName:=Dir;
Result:=True;
if not FileExists(FileName) then
begin
Result:=False;
Exit;
end;
lv.Items.BeginUpdate;
F := TFileStream.Create(FileName, fmOpenRead);
F.Read(MySignature, SizeOf(MySignature));
if MySignature <> Signature then
begin
F.Free;
Result:=False;
Exit;
end;
F.Read(ItemCount, SizeOf(ItemCount));
lv.Items.Clear;
for idxItem := 1 to ItemCount do
with lv.Items.Add do
begin
F.Read(SubCount, SizeOf(SubCount));
F.Read(IdxImage, SizeOf(IdxImage));
ImageIndex := IdxImage;
F.Read(w, SizeOf(w));
pText := StrAlloc(w + 1);
pTemp := StrAlloc(w + 1);
F.Read(pTemp^, W);
StrLCopy(pText, pTemp, W);
Caption := StrPas(pText);
StrDispose(pTemp);
StrDispose(pText);
if SubCount > 0 then
for idxSubItem := 1 to SubCount do
begin
F.Read(w, SizeOf(w));
pText := StrAlloc(w + 1);
pTemp := StrAlloc(w + 1);
F.Read(pTemp^, W);
StrLCopy(pText, pTemp, W);
lv.Items[idxItem - 1].SubItems.Add(StrPas(pText));
StrDispose(pTemp);
StrDispose(pText);
end;
end;
F.Free;
lv.Items.EndUpdate;
end;
Dmitrij_K (2006-09-20 15:58:00) [2]
> Весь в делах (20.09.06 15:32) [11]
> TStream
Причет тут stream?
Наиль (2006-09-20 15:44:00) [3]AssignFile+F1 Examle
Весь в делах (2006-09-20 15:32:00) [4]TStream
linox (2006-09-20 15:25:00) [5]ненашел
Весь в делах (2006-09-17 19:13:00) [6]Ищи в архивах там есть ответ
Весь в делах (2006-09-17 19:12:00) [7]убейсибяапстену
linox (2006-09-17 19:05:00) [8]?????....savetofile(form1.listview1....?????7);
я не расдупляюсь как правильно записать....
linox (2006-09-17 15:34:00) [9]linox (17.09.06 15:30) [4]
Ketmar (2006-09-17 15:32:00) [10]> [4] linox (17.09.06 15:30)
неко, иди в анус.
linox (2006-09-17 15:30:00) [11]2 Ketmar:
можеш на орт вместо петросяна выступать, а то он уже старый и теряет свои позиции
Ketmar (2006-09-17 15:26:00) [12]> [2] linox (17.09.06 15:05)
оставить клавиатуру! в хозяйственном продаются замечателные мётлы! купить -- и на улицу, трудиться во благо Родины.
linox (2006-09-17 15:05:00) [13]2 Dmitrij_K:
а как именно делать запись в файл, я не знаю
Dmitrij_K (2006-09-17 14:58:00) [14]
AssignFile(F, 'log.txt');
If FileExists('log.txt') then Append(F) else ReWrite(F);
for j:=0 to pred(ListView1.Items.Count) do
begin
// тут писать в файл
end;
CloseFile(F)