Delphi執行緒的初級應用

2022-08-21 21:57:17 字數 3136 閱讀 6662

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 長工作型執行緒示例,執行乙個很長時間的工作,但可以很快響應取消操作。以下程式所用的知識為 訊息機...