unit DvsLinkingClass; interface uses Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs; type PRecLinkNode = ^RecLinkNode; RecLinkNode = record NodeMsg: String; Counter: Integer; Previous: PRecLinkNode; Next: PRecLinkNode; end; TLinkingClass = class private //FNode,LNode:PRecLinkNode; public FNode,LNode:PRecLinkNode; constructor create; destructor destroy; override; procedure AddNode(S:String); procedure DeleteFNode(S:String); procedure BakupMsg; end; implementation var LinkingClass: TLinkingClass; constructor TLinkingClass.create; begin inherited; FNode := nil; LNode := nil; end; procedure TLinkingClass.AddNode(S:String); var p:PRecLinkNode; begin new(p); if FNode = nil then begin LNode:=FNode; p.NodeMsg:=S; p.Next:=FNode; p.Previous:=FNode; FNode:=p; LNode:=p; end else begin LNode.Next:=p; p.NodeMsg:=S; p.Next:=nil; p.Previous:=LNode; LNode:=p; end; end; procedure TLinkingClass.DeleteFNode(S:String); var p:PRecLinkNode; begin p := FNode; begin FNode := FNode.next; dispose(p); end; end; destructor TLinkingClass.destroy; var p:PRecLinkNode; begin //BakupMsg; while FNode <> nil do begin p := FNode; FNode := FNode.next; dispose(p); end; inherited; end; procedure TLinkingClass.BakupMsg; var Msg:TStringList; p:PRecLinkNode; sSavePath: string; begin sSavePath := ExtractFilePath(Application.ExeName) + FormatDateTime('YYYYMMDD_HHMMSS', Now) + 'BakMsg' + '.txt'; Msg:=TStringList.Create; if FNode <> nil then try while FNode <> nil do begin p := FNode; Msg.Add(p.NodeMsg); FNode := FNode.next; end; finally Msg.SaveToFile(sSavePath); FreeAndNil(Msg); end; end; initialization LinkingClass := TLinkingClass.create; finalization LinkingClass.Free; end.