全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2092
推到 Plurk!
推到 Facebook!

程式看得懂的檔案

尚未結案
hct47
一般會員


發表:34
回覆:15
積分:9
註冊:2004-04-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-29 15:32:19 IP:211.20.xxx.xxx 未訂閱
Dear all: 我在程式裡有24張圖(TBitmap)以及24個字串(string),我要將他們存成一個檔,待我下次直接叫出這個檔案可以使用,該怎麼做才好?
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-29 16:07:29 IP:202.62.xxx.xxx 未訂閱
您好﹗    寫進資料庫就可以了﹒ 比較有效率的方法﹐是將字串和圖檔的路徑寫進資料庫﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-29 23:37:52 IP:59.104.xxx.xxx 未訂閱
引言: 我在程式裡有24張圖(TBitmap)以及24個字串(string),我要將他們存成一個檔,待我下次直接叫出這個檔案可以使用,該怎麼做才好?
(total bmp count)(bmp0 size)(bmp data)(bmp1 size)(bmp1 data)........(bmpn size)(bmpn data)(total string count)(string1 length)(string1 data)....(stringn length)(stringn) 用這個方法存檔。你就可以取出並將資料配給 bmp and string 了
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-30 21:20:14 IP:211.76.xxx.xxx 未訂閱
利用.res加入後 然後編譯成dll檔來使用 (深度歷險曾看過範例,可能要找找看) 努力會更接近成功
------
努力會更接近成功
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-08-01 08:46:08 IP:203.69.xxx.xxx 未訂閱
參考這篇, 敎你怎樣將圖片,字串 放入 RES File http://delphi.ktop.com.tw/topic.php?topic_id=18030 參考這篇及整個章節, 看 Windows 是如何處理 RC 的檔案 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tools/tools/rcdata_resource.asp 可以用 LoadBitmap 把圖片由 RES 讀出 這篇提供大概的製作方式及實作 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=75327
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-08-01 08:51:36 IP:203.69.xxx.xxx 未訂閱
再補充最近的文章, 敎你如何製作 Resource DLL http://delphi.ktop.com.tw/topic.php?topic_id=73755
hct47
一般會員


發表:34
回覆:15
積分:9
註冊:2004-04-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-08-01 14:27:22 IP:61.221.xxx.xxx 未訂閱
Dear 黑暗破壞神:        我不懂你的意思耶,可以再說清楚一點嗎?謝謝... <>< face="Verdana, Arial, Helvetica">引言: (total bmp count)(bmp0 size)(bmp data)(bmp1 size)(bmp1 data)........(bmpn size)(bmpn data)(total string count)(string1 length)(string1 data)....(stringn length)(stringn) 用這個方法存檔。你就可以取出並將資料配給 bmp and string 了 另外,感謝各位熱心回應,可能我的問題沒有說清楚,我再說清楚一點... 我的軟體可以叫出圖形bmp檔(最多24張圖),並在圖形旁邊可以用文字說明, 目前我做到可以列印的功能,但是這個程式關閉後,下次要在列印就要再重新拉圖,而且每個人的需求不同,所以我的目的是希望建立像word的類似功能一樣,在軟體按下存檔,就存下選的圖跟註明的文字(成一個檔案),待下次再叫出這個檔案,可以供使用者列印... 發表人 - hct47 於 2005/08/01 14:43:30
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-08-01 16:07:20 IP:220.132.xxx.xxx 未訂閱
參考
http://delphi.ktop.com.tw/topic.php?topic_id=64653  
努力會更接近成功
------
努力會更接近成功
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-08-01 17:43:50 IP:59.104.xxx.xxx 未訂閱
引言: (total bmp count)(bmp0 size)(bmp data)(bmp1 size)(bmp1 data)........(bmpn size)(bmpn data)(total string count)(string1 length)(string1 data)....(stringn length)(stringn)
檔案內容是這樣存的。 全部的 bmp 數,(第一個 bmp 所佔的空間, bmp 的資料),....... 全部數串數,(第一個字串所佔空間,字串內容)....... 括號處重複。 這樣你要讀出時。 讀到第一個資料是 共有 N 個 bmp 就知道要去準備 N 個 bmp 的陣列。 然後用個 loop 就可以讀入 全部的 bmp data 同樣的讀法再讀出 string 即可
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-08-01 20:06:02 IP:220.132.xxx.xxx 未訂閱
access檔案, *.mdb 可以放字串, 也可以放影像檔及memo 夠好用的了吧 (玩了一個下午的TIdEncoderMIME; TIdDecoderMIME轉來轉去,實在好笑)     
 
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls,jpeg,
  ExtDlgs, IdCoder, IdCoder3to4, IdCoderMIME, IdBaseComponent;    type
  TForm1 = class(TForm)
    Image1: TImage;
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    OpenPictureDialog1: TOpenPictureDialog;
    IdEncoderMIME1: TIdEncoderMIME;
    IdDecoderMIME1: TIdDecoderMIME;
    Label1: TLabel;
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.dfm}    procedure TForm1.Button3Click(Sender: TObject);
begin
  if  OpenPictureDialog1.Execute then
  begin
      Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
  end;
end;    procedure TForm1.Button1Click(Sender: TObject);
var
 f : TmemoryStream;
begin
  f := TmemoryStream.Create;
 try
   image1.Picture.Graphic.SavetoStream(f);
   f.Position := 0;
   IdEncoderMIME1
   Memo1.Lines.Text := IdEncoderMIME1.Encode(f);
   label1.caption := inttostr(length(Memo1.Lines.Text));
 finally
   f.Free;
 end;
end;    procedure TForm1.Button2Click(Sender: TObject);
var
 f : TmemoryStream;
begin
 f := TmemoryStream.Create;
 try
   IdDecoderMIME1.DecodeToStream(Memo1.Lines.Text,f);
   f.Position := 0;
   image1.Picture.Graphic.LoadFromStream(f);
 finally
   f.Free;
 end;
end;    end.    
努力會更接近成功
------
努力會更接近成功
hct47
一般會員


發表:34
回覆:15
積分:9
註冊:2004-04-23

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-08-01 23:56:20 IP:61.62.xxx.xxx 未訂閱
dear pceyes:        您的Button1click事件裡有一行"IdEncoderMIME1"  是沒寫完ㄇ?    還有,我另外加了一個image2,把Button2click裡面改成    image2.Picture.Graphic.LoadFromStream(f);結果發生以下錯誤
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-08-02 09:07:01 IP:220.132.xxx.xxx 未訂閱
image2.Picture.bitmap.LoadFromStream(f); 我看IdEncoderMIME好像不支持jpeg格式 努力會更接近成功
------
努力會更接近成功
hct47
一般會員


發表:34
回覆:15
積分:9
註冊:2004-04-23

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-08-02 10:48:21 IP:211.20.xxx.xxx 未訂閱
Dear 暗黑破壞神: 請問我要用什麼樣的格式去存取你說的括號裡的東西? ps.好難過喔,試了好久還是不知道怎麼下手...
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#14 引用回覆 回覆 發表時間:2005-08-02 11:27:41 IP:61.222.xxx.xxx 未訂閱
暗黑兄的意思是請自行利用 TFileStream 寫一個屬於自己格式的檔案。 ~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~
hct47
一般會員


發表:34
回覆:15
積分:9
註冊:2004-04-23

發送簡訊給我
#15 引用回覆 回覆 發表時間:2005-08-02 14:36:32 IP:211.20.xxx.xxx 未訂閱
Dear all:    不好意思,一直大擾大家,我有用TFilestream試過了字串,可以使用,但是我用Tbitmap時,好像都存不到圖檔耶,底下是我的程式碼:  
    procedure TForm1.SaveFile1Click(Sender: TObject);
    var ms:Tmemorystream;
    i,j,pictC:integer;
    FileStream : TFileStream;
    FileName : String;
    begin
        Filename:='D:\datdata\data.hct';
    FileStream:=TFileStream.create(FileName,fmCreate);
    for i:=0 to 10 do
    begin
    FileStream.Write(selpic.SelectPic[i],sizeof(selpic.SelectPic[i]));
    end;
    FileStream.Free ;
    //selpic.SelectPic[i]是 TBitmap陣列
    end;
    
    procedure TForm1.LoadFile1Click(Sender: TObject);
    var ms:Tmemorystream;
    filestream:Tfilestream;
    Filename:string;
    i:integer;
    begin
    Filename:='D:\datdata\data.hct';
    FileStream :=TFileStream.Create(FileName,fmopenread);
    FileStream.Position :=0;
   
    for i:=0 to 10 do
    begin
      selpic.SelectPic[i]:=Tbitmap.Create;
    end;
    FileStream.Read(selpic.SelectPic,Sizeof(selpic.SelectPic));
    image0.Canvas.StretchDraw(Rect(0,0,image0.Width,image0.Height),selpic.SelectPic[0]);
    image1.Canvas.StretchDraw(Rect(0,0,image1.Width,image1.Height),selpic.SelectPic[1]);
    FileStream.Free ;
end;
  
 
image0和image1的圖檔show出來的圖都是白的...沒東西
jimmy_wei
高階會員


發表:9
回覆:176
積分:147
註冊:2003-08-28

發送簡訊給我
#16 引用回覆 回覆 發表時間:2005-08-02 14:46:15 IP:210.243.xxx.xxx 未訂閱
插花一下: 為什麼不直接放到ini檔裡就好?? 這就是一個現成程式看的懂的檔案了呀!!??
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#17 引用回覆 回覆 發表時間:2005-08-02 15:17:58 IP:220.132.xxx.xxx 未訂閱
ini可以放字串 但她要存image檔 而且全部存成一個檔 努力會更接近成功
------
努力會更接近成功
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#18 引用回覆 回覆 發表時間:2005-08-02 15:27:15 IP:220.132.xxx.xxx 未訂閱
反正妳已能將字串存成檔案 那就 先將圖檔用 IdEncoderMIME1.Encode 轉成字串 再存就好了嘛 努力會更接近成功
------
努力會更接近成功
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#19 引用回覆 回覆 發表時間:2005-08-02 15:43:57 IP:203.69.xxx.xxx 未訂閱
程式中的 SizeOf(...) 錯了, 應該用 selpic.SelectPic[i].SaveToStream(aStream); aStream.Size 才是圖的大小
hct47
一般會員


發表:34
回覆:15
積分:9
註冊:2004-04-23

發送簡訊給我
#20 引用回覆 回覆 發表時間:2005-08-02 15:51:37 IP:210.202.xxx.xxx 未訂閱
dear pceyes: Delphi6.0沒有 IdEncoderMIME1.Encode ,我有去下載使用.但就像我回的文章一樣,有Error,所以不知道該怎辦.
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#21 引用回覆 回覆 發表時間:2005-08-02 18:14:46 IP:220.132.xxx.xxx 未訂閱
昨天我就知d6沒有IdDecoderMIME 所以馬上裝d7來試試    我又玩了一個下午, 找了好多資料    以下的碼支持bmp及jpeg  < class="code"> unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls,jpeg, ExtDlgs, IdAntiFreezeBase, IdAntiFreeze, IdCoder, IdCoder3to4, IdCoderMIME, IdBaseComponent; type TForm1 = class(TForm) Image1: TImage; Memo1: TMemo; Button1: TButton; Button2: TButton; Button3: TButton; OpenPictureDialog1: TOpenPictureDialog; Label1: TLabel; Image2: TImage; IdDecoderMIME1: TIdDecoderMIME; IdEncoderMIME1: TIdEncoderMIME; IdAntiFreeze1: TIdAntiFreeze; procedure Button3Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button3Click(Sender: TObject); var bmp : TBitmap; jpg : TJpegimage; Ratio : double; NewH, NewW : integer; begin if OpenPictureDialog1.Execute then begin if Uppercase(ExtractFileExt(OpenPictureDialog1.filename)) = '.JPG' then begin jpg := TJpegimage.create; bmp := TBitmap.create; try jpg.LoadFromFile(OpenPictureDialog1.filename); bmp.Assign(jpg); bmp.Dormant; bmp.FreeImage; // Free up Memory. image1.Picture.Assign(bmp); finally bmp.Free; jpg.Free; end; end else if Uppercase(ExtractFileExt(OpenPictureDialog1.filename)) = '.BMP' then begin image1.Picture.LoadFromFile(OpenPictureDialog1.filename); end; end; end; procedure TForm1.Button1Click(Sender: TObject); var f : TmemoryStream; begin f := TmemoryStream.Create; try image1.Picture.bitmap.SavetoStream(f); f.Position := 0; Memo1.Lines.Text := IdEncoderMIME1.Encode(f); label1.caption := inttostr(length(Memo1.Lines.Text)); finally f.Free; end; end; procedure TForm1.Button2Click(Sender: TObject); var f : TmemoryStream; begin f := TmemoryStream.Create; try IdDecoderMIME1.DecodeToStream(Memo1.Lines.Text,f); f.Position := 0; image2.Picture.bitmap.LoadFromStream(f); finally f.Free; end; end; end. 努力會更接近成功
------
努力會更接近成功
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#22 引用回覆 回覆 發表時間:2005-08-02 21:28:55 IP:220.132.xxx.xxx 未訂閱
剛才到深度歷險找到這個,很像你要的東東 下載< href="http://www.vclxx.org/DELPHI/D32FREE/PAKIT.ZIP">http://www.vclxx.org/DELPHI/D32FREE/PAKIT.ZIP 網址http://www.vclxx.org/DELPHI/AAAT1029.HTM PAKIT.ZIP 一組能將多個檔案打包成為單一檔案的類別 ( 0.1 版,附原始程式碼 ) ,作者 : Sean Mathews。 畫面是用d7編譯的 < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=23810236&CC=532504"> 努力會更接近成功
------
努力會更接近成功
hct47
一般會員


發表:34
回覆:15
積分:9
註冊:2004-04-23

發送簡訊給我
#23 引用回覆 回覆 發表時間:2005-08-03 18:05:10 IP:210.202.xxx.xxx 未訂閱
試出來了,我用TFilestream,存每個圖的pixel.叫出檔案時在把值放到陣列,再把每張圖的pixel塞給bitmap.再用image顯示.感謝大家熱情教學...
系統時間:2024-05-20 23:02:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!