viewradio_th執行緒函式在form外生命全域性變數、函式內相應的區域性變數可以接收全域性變數的賦值進行操作、query等可以自行建立進行查詢、這樣結果不會改變。//下面是後台傳送字幕的執行緒函式應用。
……var
ldate,ldatetime:string;
lhandle:thandle;
dloopthreadid:dword;
message_form: tmessage_form;
function viewradio_th(p:pointer):longint;stdcall;
implementation
uses commondm, ubox_c, common_u, loginform;
……//呼叫執行緒
lhandle := createthread(nil,0,@viewradio_th,nil,0,dloopthreadid);
//執行緒函式
function viewradio_th(p:pointer):longint;stdcall;
var lquery,lnumquery:toraquery;
i,j: integer;
th_date,th_datetime:string;
th_handle:thandle;
th_loopthreadid:dword;
maxnum,boxid,boxip:string;
f:textfile;
begin
th_date:=ldate;
th_datetime:=ldatetime;
th_handle:=lhandle;
th_loopthreadid:=dloopthreadid;
lquery:=toraquery.create(nil);
lnumquery:=toraquery.create(nil);
lquery.fetchall:=true;
lnumquery.session:=common_dm.common_session;
lquery.session:=common_dm.common_session;
with lnumquery do
begin
close;
sql.clear;
sql.add('select max(promotesalesplaynumber) maxnum from promotesales_t where promotesalestype=''?¤??'' and '''+
th_date+' ''||promotesalesplaytime='''+th_datetime+'''');
open;
end; // with
if lnumquery.recordcount<>0 then
maxnum:=lnumquery['maxnum'];
with lquery do
begin
close;
sql.clear;
sql.add('select * from promotesales_t where promotesalestype=''?¤??'' and '''+
th_date+' ''||promotesalesplaytime='''+th_datetime+'''');
open;
end; // with
for i := 1 to strtoint(maxnum) do // iterate
begin
lquery.first;
if i<>1 then
sleep(60000);
for j := 0 to lquery.recordcount - 1 do // iterate
begin
if strtoint(lquery['promotesalesplaynumber'])>=i then
begin
boxid:=lquery['promoteboxid'];
with lnumquery do
begin
close;
sql.clear;
sql.add('select * from box_t where boxid='''+boxid+'''');
open;
end; // with
boxip:=lnumquery['boxip'];
if fileexists(common_u.fileaddress(boxip,'radioroot')+'.tit') then
deletefile(common_u.fileaddress(boxip,'radioroot')+'.tit');
assignfile(f, common_u.fileaddress(boxip,'radioroot')+'.tit');
rewrite(f);
writeln(f, '[parameter]'+#13+'delay=0'+#13+'intodelay=0'+#13+#13+'[textadosd]'+
#13+'playmode=right_in_left_out'+#13+'type=text'+#13+'font=????'+#13+'fontsize=40'+#13+'looptime=1'+#13+'speed=5'
+#13+'delay=0'+#13+'time=0'+#13+'foregroundcolor=255 255 0'+#13+'backgroundcolor=0 0 0'+#13+'useshadow=y'+#13+'shadowcolor=255 0 0'
+#13+'shadowdelta=1 1'+#13+'cmd=first'+#13+'text='+lquery['promotesalescontent']);
closefile(f);
end;
lquery.next;
end; // for
end; // for
lquery.free;
lnumquery.free;
if th_handle<>0 then
terminatethread(th_handle,th_loopthreadid);
end;
delphi初級教程之delphi斷點除錯一
所謂斷點,就是在程式 的某一行上設定乙個標記,程式執行到這裡將暫停,由調 試器接管對程式的控制。使用斷點與使用 runto cursor 命令有些相似,都是執行到某 一行後暫停。不同的是,程式中可以設定多個斷點並且能夠給斷點設定條件。斷點通常設定在有疑點的區域。在遇到斷點之前,程式以全速執行。遇到斷...
map的初級應用
map實際採用了紅黑樹的實現,在此,我們先不討論map的底層實現結構原理,先來看看map究竟是怎麼用,以及我是怎麼看待map的.先上 1 include 2 include 3 include 4 using namespace std 5int main 6 上述 描述了關於map的應用,從中可以...
執行緒!執行緒!!執行緒!!! Delphi版
以下內容僅供初學者參考 看到有的同學對delphi的執行緒認識不夠深,特開一貼給同學們講講。主要給出兩種常用的執行緒形式。1 長等待型執行緒示例,等待命令,執行不定長的工作,但每個工作的時間不會太長。2 長工作型執行緒示例,執行乙個很長時間的工作,但可以很快響應取消操作。以下程式所用的知識為 訊息機...