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

類似幻燈片播放-只能47張

答題得分者是:jow
mirood
一般會員


發表:10
回覆:27
積分:7
註冊:2007-02-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-12-12 10:59:23 IP:203.160.xxx.xxx 訂閱
寫個一個類似幻燈片播放~
但是只能撥放到47張~
之後卻要重來~
這是甚麼問題呢?
會不會因為我使用
CGauge元件導致的呢?
請問要怎麼解決?
謝謝各位大家!



[code cpp]
unsigned int IMG_star=1;
unsigned int IMG_end=2;

AnsiString pp,IMG_name="Image";
CGauge1->MaxValue=IMG_end;
CGauge1->MinValue=IMG_star;


if(IMG_star>=IMG_end)
{
IMG_star=1;
}

do
{
pp=IMG_name IMG_star ".jpg";
if(fopen(pp.c_str(),"r")!=NULL)
{
Form2->Image1->Picture->LoadFromFile(pp);
Form2->Show();
Application->ProcessMessages();
Mask_star ;
CGauge1->Progress ;
Form1->Show();
Application->ProcessMessages();
}
else
{
IMG_star ;
CGauge1->Progress ;
}

} while(IMG_star!=Mask_end);

if(IMG_star==IMG_end)
{
Form2->Close();
Form1->Show();
ShowMessage("END");
}

[/code]
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-12-13 13:26:17 IP:210.66.xxx.xxx 訂閱
看你的程式碼, 似乎達不到你的需求, 而且也有些問題?!

以下是一些個人的淺見, 提供你參考....

(1)以do-while loop 持續播放圖檔, 而沒有加上delay時間
(2)if(fopen(pp.c_str(),"r")!=NULL), 有開檔而沒關檔動作
(3)以檔名檢查圖檔是否存在, 以FileExists()為之, 不需要開啟檔案
(4)Form1, Form2 不知道為何要放到迴圈裡, 多次叫用Show()
(5)叫用 Application->ProcessMessages(); 兩次也好像有點多餘

程式碼僅供參考

[code cpp]
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
unsigned int IMG_star=1;
unsigned int IMG_end =47;
unsigned long delay = 1000 / 30; //每秒播放30張

AnsiString IMG_name="Image";
CGauge1->MinValue=IMG_star;
CGauge1->MaxValue=IMG_end;

Form1->Hide();
try{
Form2->Show();
try{
AnsiString fn;
do{
fn.sprintf("%s%d.jpg", IMG_name, IMG_star);
if(FileExists(fn)){
Form2->Image1->Picture->LoadFromFile(fn);
Application->ProcessMessages();
Sleep(delay);
}
CGauge1->Progress ;
CGauge1->Update();
IMG_star ;
}while(IMG_star<=IMG_end);
}
__finally{
Form2->Hide();
}
}
__finally{
Form1->Show();
}
}
//---------------------------------------------------------------------------

[/code]
編輯記錄
jow 重新編輯於 2007-12-13 13:26:42, 註解 無‧
jow 重新編輯於 2007-12-13 13:47:55, 註解 無‧
mirood
一般會員


發表:10
回覆:27
積分:7
註冊:2007-02-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-12-13 14:13:34 IP:140.124.xxx.xxx 訂閱
為甚麼我原始的程式~
總是只能跑47張圖~
超過之後就不會播放呢?!
謝謝上一位的指導~

[code cpp]
AnsiString pp,IMG_name="Img";
unsigned int IMG_star=1;
unsigned int IMG_end =200;
Memo3->Lines->Add(Now());
CGauge1->MaxValue=IMG_end;
CGauge1->MinValue=IMG_star;

if(IMG_star>=IMG_end)
{
IMG_star=1;
Memo3->Clear();
}

do
{
//pp=IMG_name IMG_star ".jpg";
pp.sprintf("%s%d.jpg", IMG_name, IMG_star);
//if(fopen(pp.c_str(),"r")!=NULL)
if(FileExists(pp))
{

Form1->Hide();
Form2->Image1->Picture->LoadFromFile(pp);
Form2->Show();
Application->ProcessMessages();
IMG_star ;
CGauge1->Progress ;
Form1->Show();
Application->ProcessMessages();


}
else
{
IMG_star ;
CGauge1->Progress ;
}
} while(IMG_star!=IMG_end);

[/code]
編輯記錄
mirood 重新編輯於 2007-12-13 15:04:16, 註解 無‧
mirood 重新編輯於 2007-12-13 15:28:45, 註解 無‧
mirood 重新編輯於 2007-12-13 15:29:11, 註解 無‧
mirood 重新編輯於 2007-12-13 15:29:56, 註解 無‧
mirood 重新編輯於 2007-12-13 15:39:52, 註解 無‧
mirood 重新編輯於 2007-12-13 15:42:59, 註解 無‧
mirood
一般會員


發表:10
回覆:27
積分:7
註冊:2007-02-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-12-13 15:48:29 IP:140.124.xxx.xxx 訂閱
會不會因為Image1的問題呢?
系統時間:2024-04-23 14:55:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!