Jason's Blog

思緒邊境

Archive for the ‘Delphi’ Category

判斷是由遠端桌面連線進來執行程式

leave a comment »

因為要控制系統的授權,需要知道使用者是在本機執行系統或是由遠端桌面連線到主機上執行,透過下列簡單程式碼即可。
  function IsRemoteSession: Boolean;
  const
    sm_RemoteSession = $1000; { from WinUser.h }
  begin
    Result := (GetSystemMetrics(sm_RemoteSession) <> 0); 
    //如果是由遠端桌面連線來執行程式就會回傳True
  end;

GetSystemMetrics這個API主要應該是用來取得視窗顯示的各項資訊,詳細可以再參考下面幾個網站
ACC: 如何使用 GetSystemMetrics() API 呼叫
GetSystemMetrics Function

Written by Jason

2011 年 06 月 21 日 at 09:40:41

張貼於Delphi

醒醒阿!! Delphi 7

leave a comment »

用了好一陣子的Delphi 7,昨天突然掛了,
一開就出現:
Borland license information was found, but is not valid for Delphi
You can not run Delphi without this information
Click the ‘Exit’ button to exit Delphi
 
差點就想把他移掉重灌,
還好,有先上google找一下,
這裡有人重灌了N次還是沒有解決,
後來看到,
只要把C:/Documents and Settings/帳號名稱/.borland這個目錄刪掉,
就解決了!!
 
再一次謝謝google及熱心網友的分享~~
開懷大笑
 

Written by Jason

2008 年 10 月 01 日 at 09:37:19

張貼於Delphi

ReportBuilder Memo元件列印中文折行切字問題處理

with 2 comments

針對ReportBuilder在Memo欄位列印時,會因為錯誤的切字處理,把中文字切成兩半,導致列印結果出現亂碼的問題,提出解決方法:
 

1.修改Report Builder Source ppPlainText.pas:

function TppPlainTextParser.GetNextWord: string;
var
  lbEndOfWord: Boolean;
  lCharacter: Char;
  lsWord: string;
begin

  lsWord := “;
  lbEndOfWord := False;

  while not (lbEndOfWord) and not (FAllWordsParsed) do
  begin
      {move to next position in the text}
    Inc(FCharPos);

      {reached end of the text}
    if (FCharPos > FTextLength) then
      FAllWordsParsed := True
    else
    begin

      lCharacter := FText[FCharPos];

      if StrByteType(Pchar(FText), FCharPos – 1) = mbTrailByte then
      begin
        lbEndOfWord := True;
        if (lsWord <> “) then
          lsWord := lsWord + lCharacter;
      end
      else
if (lCharacter = TppTextMarkups.Null) then
        FAllWordsParsed := True

     …………………….

紅色部分為新增的程式碼

 

2.重新編譯 Package rbRCL66.dpk,在編譯之前看一下Project Options裡面有關目錄的設定

a.Output directory:  C:\Windows\System32 or C:\Winnt\System32 看你的電腦

b.Unit output directory: ..\Lib

c.DCP output directory: ..\Lib

 

3.在Report Builder裡面,Memo元件的 CharWarp要設定為False。

這樣應該就OK了。

Written by Jason

2005 年 02 月 03 日 at 09:00:20

張貼於Delphi

在Delphi IDE環境執行程式,結束後Delphi當掉

leave a comment »

    最近,我的Delphi每次在IDE環境裡測試程式,連用一進Delphi就有的完全空白的Form,一執行就立刻結束,Delphi就當了,連整台電腦幾乎都掛了,好幾次都不小心按了執行,導致結束後要重新開機,而來不及把程式存檔,每次都要在Compile程式之後,到外面執行才沒事,可是遇到要Debug程式,又不得不在IDE裡執行,真是快昏了!!

    前幾天用了一個程式 Process Explorer 查查看,能不能發現些什麼,就發現在當機的同時,Delphi去執行一個InitCC32.exe的程式,我就用這個工具把InitCC32.exe結束掉,Delphi立即就恢復正常了,在去找這個檔案時,發現他已經不見了,原來Delphi要去叫這支程式的時候,動態產生這支程式,這支程式結束後,又把它刪除,所以你要找到他,要在這支程式正在執行的時候才看的到,有了這個發現,只好在Debug程式前,先把Process Explorer執行起來,當機了,就用它把InitCC32.exe結束掉,也就行了,不過還是很麻煩!!

    今天上Google找有關InitCC32.exe的資訊,似乎沒有什麼發現,不過有網友提到可能跟Tools\Debugger Options…裡的設定有關,只好試試逐一調整裡面的設定,終於,發現原來跟Debugger Options裡,Event Log頁面裡Window messages的選項有關,把它取消掉就可以了!!

Written by Jason

2005 年 01 月 12 日 at 12:06:51

張貼於Delphi