亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? uwaitcomplete.pas

?? FMA is a free1 powerful phone editing tool allowing users to easily manage all of the personal data
?? PAS
字號(hào):
unit uWaitComplete;

{
*******************************************************************************
* Descriptions: Sony Ericsson progress bar
* $Source: /cvsroot/fma/fma/uWaitComplete.pas,v $
* $Locker:  $
*
* Todo:
*    - remove ErrorOccured, use DebugStr only as error flag.
*
* Change Log:
* $Log: uWaitComplete.pas,v $
*
}

interface

uses
  Forms, TntForms, Windows, TntWindows, Classes, TntClasses, Controls, TntControls, SysUtils, TntSysUtils;

type
  TWaitThread = class(TThread)
  private
    DebugStr: WideString;
    FIsFinished: Boolean;
    FIsStarted: Boolean;
    FSendingStr: String;
    function Get_IsErrorOccur: Boolean;
    procedure SetName;
    procedure SendStr(const Str: String);
    procedure DoSendStr;
  protected
    TxData,RcWait: String;
    ErrorOccured: Boolean;
    procedure Execute; override;
  public
    constructor Create(SendData,WaitFor: string);
    function GetLastError: string;
  published
    property Started: Boolean read FIsStarted;
    property Finished: Boolean read FIsFinished;
    property IsErrorOccur: Boolean read Get_IsErrorOccur;
  end;

implementation

uses
  gnugettext, gnugettexthelpers,
  Unit1, uThreadSafe, uSMS, uLogger;

{ Important: Methods and properties of objects in VCL or CLX can only be used
  in a method called using Synchronize, for example,

      Synchronize(UpdateCaption);

  and UpdateCaption could look like,

    procedure TWaitThread.UpdateCaption;
    begin
      Form1.Caption := _('Updated in a thread');
    end; }

type
  TThreadNameInfo = record
    FType: LongWord;     // must be 0x1000
    FName: PChar;        // pointer to name (in user address space)
    FThreadID: LongWord; // thread ID (-1 indicates caller thread)
    FFlags: LongWord;    // reserved for future use, must be zero
  end;

{ TWaitThread }

procedure TWaitThread.SetName;
var
  ThreadNameInfo: TThreadNameInfo;
begin
  ThreadNameInfo.FType := $1000;
  ThreadNameInfo.FName := 'WaitThread';
  ThreadNameInfo.FThreadID := $FFFFFFFF;
  ThreadNameInfo.FFlags := 0;

  try
    RaiseException( $406D1388, 0, sizeof(ThreadNameInfo) div sizeof(LongWord), @ThreadNameInfo );
  except
  end;
end;

constructor TWaitThread.Create(SendData, WaitFor: string);
begin
  TxData := SendData;
  RcWait := WaitFor;
  FIsFinished := False;
  inherited Create(False);
end;

procedure TWaitThread.Execute;
begin
  SetName;

  ReturnValue := 0;
  ErrorOccured := False;
  DebugStr := '';
  { Wait for any previous thread to finish }
  repeat
    if not Assigned(ThreadSafe.ActiveThread) and (not ThreadSafe.Busy) and //not Form1.FScriptRunning and
       (WaitForSingleObject(WaitCompleteIsBusyEvent,50) = WAIT_OBJECT_0) then break;
    if ThreadSafe.Abort or Application.Terminated or Terminated then begin
      ThreadSafe.ActiveThread := nil;
      FIsFinished := True;
      FIsStarted := True;
      exit;
    end;
    Sleep(25);
  until False;

  { Ok, continue }
  FIsStarted := True;
  Screen.Cursor := crAppStart;
  try
    ThreadSafe.Busy := True;
    ThreadSafe.ActiveThread := Self;
    ThreadSafe.WaitStr := RcWait;
    ThreadSafe.LastCommand := TxData;
    ResetEvent(WaitCompleteEvent);
    if TxData <> '' then begin
      { HACK! Needed for HandleCPMS() in Unit1.pas }
      if Pos('AT+CPMS="',TxData) = 1 then // do not localize
        ThreadSafe.LastMessageStore := Copy(TxData,10,2); // ME or SM or...

      { Convert data }
      Log.AddCommunicationMessageFmt('[TX] %s', [TxData], lsDebug); // do not localize debug
      DebugStr := TxData; // do not localize debug

      if ThreadSafe.DoCharConvertion then
        TxData := GSMEncode7Bit(TxData); //TxData := ConvertCharSet(TxData, True);

      { Where and when to clear ThreadSafe.DoCharConvertion ? }
      if not ThreadSafe.WaitingOK then
        ThreadSafe.RxBuffer.Clear;
      //ShowDebug('RxBuffer: '+IntToStr(FRxBuffer.Count)+' line(s) so far');
      ThreadSafe.WaitingOK := RcWait = 'OK'; // do not localize
      { Send data... }
      ThreadSafe.MSec := GetTickCount + ThreadSafe.InactivityTimeout;
      SendStr(TxData + #13);
    end
    else
      ThreadSafe.MSec := GetTickCount + 500;

    (****************************************************************)

    { Wait complete - Main Loop }
    ThreadSafe.Timedout := False;
    while (WaitForSingleObject(WaitCompleteEvent, 200) = WAIT_TIMEOUT) and not ThreadSafe.Abort and not ThreadSafe.Timedout do begin
      ThreadSafe.Timedout := not (GetTickCount < ThreadSafe.MSec);
      if Application.Terminated then ThreadSafe.Abort := True;
    end;

    (****************************************************************)

    if ThreadSafe.WaitStr = 'ERROR' then begin // do not localize
      ErrorOccured := True;
      Log.AddCommunicationMessage('ERROR: Command return error or not understood ('+TxData+')', lsError); // do not localize debug
      DebugStr := 'Command return error or not understood ('+TxData+')'; // do not localize debug
      ThreadSafe.WaitStr := '';
    end;
    { Do not error or timeout on stray response check }
    if TxData = '' then begin
      ThreadSafe.Timedout := False;
      ErrorOccured := False;
    end;
    { Check for timeout }
    if not ThreadSafe.AlreadyInUseObex and ThreadSafe.Timedout then begin
      ErrorOccured := True;
      { TODO : Form1.IsAutoConnect needs to be Synchronized with MainThread }
      if not Form1.IsAutoConnect then Log.AddCommunicationMessage('ERROR: Wait timeout', lsError); // do not localize debug
      DebugStr := 'Wait timeout'; // be silent in re-connect mode // do not localize debug
    end;
    { Check for user abort }
    if ThreadSafe.Abort then begin
      ThreadSafe.AbortDetected := True;
      ThreadSafe.Abort := False;
      ErrorOccured := True;
      Log.AddCommunicationMessage('ERROR: Aborted by user', lsError); // do not localize debug
      DebugStr := 'Aborted by user'
    end
    else
      ThreadSafe.AbortDetected := False;
  finally
    { Ok, clear the semafor, allow next commands }
    Screen.Cursor := crDefault;
    ReturnValue := byte(ErrorOccured);
    ThreadSafe.ActiveThread := nil;
    FIsFinished := True;
    ThreadSafe.Busy := False;
    ReleaseSemaphore(WaitCompleteIsBusyEvent,1,nil);
  end;
end;

function TWaitThread.GetLastError: string;
begin
  Result := DebugStr;
end;

function TWaitThread.Get_IsErrorOccur: Boolean;
begin
  Result := ErrorOccured and (GetLastError <> '');
end;

procedure TWaitThread.SendStr(const Str: String);
begin
  FSendingStr := Str;
  Synchronize(DoSendStr);
end;

procedure TWaitThread.DoSendStr;
begin
  if ThreadSafe.ConnectionType = 0 then Form1.WBtSocket.SendStr(FSendingStr)
  else if ThreadSafe.ConnectionType = 1 then Form1.WIrSocket.SendStr(FSendingStr)
  else Form1.ComPort.WriteStr(FSendingStr);
end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线视频中文字幕一区二区| 欧美精选午夜久久久乱码6080| 99久久精品99国产精品| 欧美亚洲日本一区| 国产精品拍天天在线| 免费看欧美女人艹b| 99re视频精品| 亚洲午夜一二三区视频| 91视频免费看| 国产精品久久久久9999吃药| 日本亚洲电影天堂| 欧美视频精品在线| 蜜桃精品视频在线| 欧美精品日韩一区| 久久精工是国产品牌吗| 欧美一区二区三级| 日韩黄色在线观看| 欧美日韩日本视频| 亚洲国产视频a| 日韩一区二区三| 日韩—二三区免费观看av| 精品日本一线二线三线不卡| 手机精品视频在线观看| 精品国产免费视频| 国模大尺度一区二区三区| 日韩精品在线网站| 极品瑜伽女神91| 精品国产一区二区三区忘忧草| 床上的激情91.| 中文乱码免费一区二区| 欧美日韩精品一区视频| 亚洲成人免费看| 欧美乱妇15p| 国产iv一区二区三区| 国产精品天美传媒| 欧美日韩国产大片| 国产福利一区二区三区在线视频| 久久久久国产精品麻豆ai换脸| 国产一区二区三区在线观看免费| 久久精品一区四区| 成人av影院在线| 一区二区三区日韩在线观看| 欧美色偷偷大香| 懂色一区二区三区免费观看 | 国产成人综合在线观看| 亚洲六月丁香色婷婷综合久久| 91视频xxxx| 国产一区二区三区免费| 亚洲国产精品一区二区久久恐怖片| 国产喂奶挤奶一区二区三区| 欧美激情艳妇裸体舞| 99久久久精品| 九色|91porny| 午夜日韩在线电影| 欧美videossexotv100| 精品视频在线免费观看| 92精品国产成人观看免费| 国产一区视频在线看| 日韩精品一二三| 亚洲自拍偷拍网站| 日韩一区二区三区免费看 | 日韩av一区二| 亚洲综合精品自拍| 日韩久久一区二区| 日韩一区二区在线免费观看| 欧美视频第二页| 在线免费视频一区二区| 93久久精品日日躁夜夜躁欧美| 成人性生交大片免费| 国产精品996| 亚洲一区二区黄色| 亚洲精品ww久久久久久p站 | 欧美一二三区在线观看| 精品视频123区在线观看| 色哟哟精品一区| 精品一区二区三区在线视频| 免费成人性网站| 青青草国产精品97视觉盛宴| 日本最新不卡在线| 亚洲chinese男男1069| 亚洲国产成人av| 天天综合天天综合色| 视频一区中文字幕国产| 亚洲综合色噜噜狠狠| 亚洲欧美乱综合| 色婷婷久久久亚洲一区二区三区| 成人a级免费电影| 成人免费看黄yyy456| 菠萝蜜视频在线观看一区| 成人av在线资源网| 99久久精品免费看| 91在线无精精品入口| 日本乱码高清不卡字幕| 国产成人免费视频网站| 成人av综合在线| 色婷婷国产精品久久包臀| 91久久精品一区二区三区| 国产精品剧情在线亚洲| 亚洲蜜桃精久久久久久久| 亚洲综合在线第一页| 免费日韩伦理电影| 国产激情精品久久久第一区二区| 成人午夜电影久久影院| 在线影视一区二区三区| 欧美精品tushy高清| 久久久久9999亚洲精品| 日韩理论电影院| 日韩在线一区二区三区| 久久99精品视频| av电影一区二区| 国产毛片精品国产一区二区三区| 成人激情午夜影院| 欧美婷婷六月丁香综合色| 日韩一本二本av| 国产精品无人区| 午夜影院在线观看欧美| 国产精品99久久久久| 91传媒视频在线播放| 精品噜噜噜噜久久久久久久久试看| 欧美国产日本视频| 亚洲国产精品一区二区久久| 国产一区欧美日韩| 日本福利一区二区| 久久麻豆一区二区| 亚洲福利视频一区| 成人免费毛片a| 91麻豆精品国产91久久久使用方法| 在线视频一区二区三| 精品久久久久久久人人人人传媒| 亚洲男人天堂av网| 国内精品久久久久影院色| 欧美在线观看你懂的| xfplay精品久久| 亚洲欧美在线视频| 亚洲高清中文字幕| 风间由美一区二区三区在线观看 | 欧美最猛性xxxxx直播| 久久综合九色综合欧美98| 一区二区三区91| 国产成人小视频| 欧美一区二区三区免费大片| 亚洲人成在线播放网站岛国| 精品一区二区三区久久| 欧美日本乱大交xxxxx| 国产精品夫妻自拍| 国产精品一区二区久久不卡 | 欧美成人乱码一区二区三区| 亚洲一区二区三区不卡国产欧美| 成人午夜激情视频| 久久免费午夜影院| 精品一区二区日韩| 欧美日本一区二区三区四区| 亚洲色图都市小说| 成a人片国产精品| 国产欧美精品一区| 亚洲国产毛片aaaaa无费看| 成人高清视频免费观看| 国产亚洲一区二区在线观看| 激情综合网天天干| 欧美va亚洲va香蕉在线| 日韩精品一级二级| 3d成人动漫网站| 日韩精品电影在线| 欧美日韩一二三区| 亚洲成在人线在线播放| 欧美丝袜丝交足nylons| 亚洲成人黄色影院| 欧美日韩免费一区二区三区| 亚洲综合一二三区| 欧美三级电影网站| 亚洲一二三四久久| 欧美三区在线视频| 午夜精品一区二区三区电影天堂 | 国产情人综合久久777777| 国产麻豆欧美日韩一区| 久久亚洲精品国产精品紫薇| 国产中文字幕精品| 久久免费偷拍视频| 成人av网站免费观看| 亚洲欧美综合另类在线卡通| 91视频一区二区三区| 亚洲一卡二卡三卡四卡| 欧美群妇大交群的观看方式| 免费观看一级特黄欧美大片| 精品av综合导航| 国产成人综合视频| 亚洲三级免费电影| 欧美日韩一区二区电影| 久久狠狠亚洲综合| 国产欧美一区二区精品仙草咪| heyzo一本久久综合| 一区二区三区在线观看欧美| 欧美日韩国产高清一区二区三区| 秋霞国产午夜精品免费视频| 2024国产精品| 91蜜桃免费观看视频| 五月综合激情婷婷六月色窝| 精品精品国产高清a毛片牛牛| 国产91精品久久久久久久网曝门| 亚洲免费在线视频一区 二区|