線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1621
推到 Plurk!
推到 Facebook!

樹狀結構文件編輯器 V2.3

 
00156
高階會員


發表:45
回覆:195
積分:112
註冊:2002-06-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-14 08:47:54 IP:61.56.xxx.xxx 未訂閱
TreeDocEditor改版後加入下面幾項實用功能,感謝大家熱心提供建議...

  • HTML/FILTER格式資料匯出成WORD檔案(唯該部分功能尚有待加強)
  • 全樹文字搜尋功能(F3)
  • 搬移子樹位置(Shift-Up/Down或滑鼠拖曳、Ctrl 滑鼠拖曳)
  • 新增儲存格格式的文件(文件開頭標示成//),並支援匯出成Excel檔案
  • FILTER模式支援不定個數參數的格式
  • 節點文件內容顯示(右鍵--內容)

相關說明仍見於sample.tsd裡。
相關連結網址

  • 上一版發表位置http://delphi.ktop.com.tw/topic.php?topic_id=55058
  • 第一版發表位置(含核心原始碼)http://delphi.ktop.com.tw/topic.php?TOPIC_ID=54783
  • 所有版本完整下載位置http://uuu.to/treedoceditor
附加檔案:70976_TreeDocEditor23.zip
編輯記錄
00156 重新編輯於 2011-02-05 12:10:38, 註解 無‧
00156
高階會員


發表:45
回覆:195
積分:112
註冊:2002-06-01

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-20 23:27:34 IP:61.56.xxx.xxx 未訂閱
為了方便有興趣的人可以加強功能或轉換檔案,下面是TSD檔案的格式供大家參考... TSD檔案格式
TSD檔案由數個片段所組成,第一個片段為樹狀結構的內容,其餘各片段依序為該樹狀各個節點的資料內容。
每個片段包含前4 bytes的容量紀錄與後面的資料內容兩部分。 容量紀錄部分是一個integer(32-bit)型態,紀錄著後面資料內容的大小(bytes)
片段格式:
容量紀錄 4 bytes資料內容 (容量大小為前面紀錄的Bytes)
各片段資料讀取至各個節點後,再由程式解譯成所支援的格式顯示,如純文字、HTML、Filter、儲存格模式等。
00156
高階會員


發表:45
回覆:195
積分:112
註冊:2002-06-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-20 23:30:31 IP:61.56.xxx.xxx 未訂閱
以下是存取TSD檔案的獨立程序...
procedure SaveToTSDFile(var FromTreeView:TTreeView; AFileName:TFileName);
var TreeStream,Buffer:TMemoryStream;
    size,i,j:LongInt;
begin
  TreeStream:=TMemoryStream.Create;
  Buffer:=TMemoryStream.Create;
  try
    FromTreeView.SaveToStream(TreeStream);
    size:=TreeStream.Size;
    Buffer.Write(size,SizeOf(size));
    Buffer.CopyFrom(TreeStream,0);
    for i:=0 to FromTreeView.Items.Count-1 do
      begin
        if FromTreeView.Items[i].Data<>nil then size:=Length(String(FromTreeView.Items[i].Data^))
        else size:=0;
        Buffer.Write(size,SizeOf(size));
        if size>0 then
          begin
            //不知為何要一個個字元寫入才行???
            for j:=1 to Length(String(FromTreeView.Items[i].Data^)) do
              Buffer.Write(String(FromTreeView.Items[i].Data^)[j],1);
          end;
      end;
    Buffer.SaveToFile(AFileName);
  finally
    Buffer.Free;
    TreeStream.Free;
  end;
end;    procedure LoadFromTSDFile(AFileName:TFileName; var ToTreeView:TTreeView);
var TreeStream,Buffer:TMemoryStream;
    size,i,j:LongInt;
    p:^string;
    a:char;
begin
  TreeStream:=TMemoryStream.Create;
  Buffer:=TMemoryStream.Create;
  try
    Buffer.LoadFromFile(AFileName);
    Buffer.Read(size,SizeOf(size));
    TreeStream.CopyFrom(Buffer,size);
    TreeStream.Position:=0;
    ToTreeView.LoadFromStream(TreeStream);
    for i:=0 to ToTreeView.Items.Count-1 do
      begin
        Buffer.Read(size,SizeOf(size));
        New(p);
        ToTreeView.Items[i].Data:=p;
        for j:=1 to size do  //不知為何要一個個字元讀出才行???
          begin
            Buffer.Read(a,1);
            String(ToTreeView.Items[i].Data^):=String(ToTreeView.Items[i].Data^) a;
          end;
      end;
  finally
    Buffer.Free;
    TreeStream.Free;
  end;
end;
系統時間:2024-05-19 18:17:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!