二月 2018
« 一月    
 1234
567891011
12131415161718
19202122232425
262728  

彙整

使用 DELPHI 抓取 WINDOWS 內的環境變數值

使用 DELPHI 抓取 WINDOWS 內的環境變數值

GetEnvironmentVariable(‘TEMP’)

其中TEMP為WINDOWS的環境變數

Windows 在 command 模式下輸入 set 也可秀出現有 Windows 的環境變數,把變數值帶入這個 Function 內即可取得,回傳值是文字型態。

Windows常用變數: 參考來源:http://jck11.pixnet.net/blog/post/13459124-windows%E7%B3%BB%E7%B5%B1%E5%85%A7%E5%BB%BA%E7%9A%84%E5%B8%B8%E8%A6%8B%E7%92%B0%E5%A2%83%E8%AE%8A%E6%95%B8

%ALLUSERSPROFILE%:All Users設定檔的資料夾位置。 %APPDATA%:目前使用者的Application Data資料夾位置。 %CD%:目前的工作資料夾。 %CLIENTNAME%:目前使用者的NETBIOS電腦名稱。 %CMDCMDLINE%:處理目前命令提示字元視窗命令的cmd.exe的完整路徑。 %CMDEXTVERSION%:目前Command Processor Extensions的版本。 %COMPUTERNAME%:電腦名稱。 %COMSPEC%::命令提示字元視窗的解譯程式路徑,通常與%CMDCMDLINE%相同。 %CommonProgramFiles%:Common Files資料夾的路徑。 […]

DELPHI 7 下 TEXT檔 ANSI與UTF8互轉方式-Write & Read UTF-8 Text File

DELPHI 7 下 TEXT檔 ANSI與UTF8互轉方式

出處:http://tw.myblog.yahoo.com/cschen99ws/article?mid=16596&prev=18175&l=f&fid=52

procedure TForm1.Button1Click(Sender: TObject); var  S:string;   begin     with   TMemoryStream.Create   do   try             S   :=   #$EF#$BB#$BF;             Write(S[1],   Length(S));             S   :=   AnsiToUtf8(Memo1.Text);             Write(S[1],   Length(S));             Position   :=   0;           SaveToFile(‘c:\temp.txt’);       finally             Free;         end;   end;      procedure TForm1.Button2Click(Sender: TObject); var         […]

Delphi 2010自帶TIdFTP的中文問題

DELPHI7 + INDY

抓檔前先轉UTF8Encode filename:= UTF8Encode(filename);   FIdFtp.Get(filename,tStream,true);

未測試………………

==================================================================================

出處:http://hi.baidu.com/syncgrey/blog/item/8c894e823c7f78aa6c8119f1.html

1、Delphi 2010自帶TIdFTP的中文問題   最近使用TIdTFP,使用ChangeDir切換到中文目錄時報錯,錯誤提示中的中文目錄成了一串“?”號,閱讀源代碼得知,該控件的默認IOHandle的默認Encoding是ASCII(代碼頁為20127),ITdFTP在Connect方法中,連接成功後,有這麼一句:

    // RLebeau: must not send/receive UTF-8 before negotiating for it…     IOHandler.DefStringEncoding := Indy8BitEncoding;

再轉到Indy8BitEncoding 中看看:

function Indy8BitEncoding(const AOwnedByIndy: Boolean = True): TIdTextEncoding; var   LEncoding: TIdTextEncoding; […]

[DELPHI] cxGrid的使用方法

朋友貼給我的,只知道是大陸網站上分享的資料,可在cxGrid內使用CheckBox喔!!!只是用了之後以前可使用 Shift 選區段的功能似乎不能用了。

======================================================================

cxGrid的使用方法

cxGrid功能強大,適合做企業級的複雜查詢。非常方便。

但是對其用法介紹的並不多,在此總結他人的使用經驗和自己的一點小經驗,供大家參考。

(1)動態設置顯示格式

procedure SetDisplayFormat(ACtrlData: TClientDataSet;

  TbView: TcxGridDBTableView);

var

  i: integer;

begin

  if ACtrlData.RecordCount <= 0 then Exit;

  try

    TbView.ClearItems;

    ACtrlData.First;

    for i := 0 to ACtrlData.RecordCount – 1 do

    begin

      if ACtrlData.FieldByName(‘SQBF_DisplayInGrid’).AsString = ‘1’ then //在表格中顯示

      with TbView.CreateColumn do

      begin

        DataBinding.FieldName := ACtrlData.FieldByName(‘SQBF_FieldName’).AsString;

        Caption := ACtrlData.FieldByName(‘SQBF_Caption’).AsString; //欄位中文標題

        Hint := ACtrlData.FieldByName(‘SQBF_Hint’).AsString;

        Width := ACtrlData.FieldByName(‘SQBF_Width’).AsInteger;

        HeaderAlignmentHorz := taCenter;

      end;

      […]

Delphi 下讓使用者選擇目錄方式:

Delphi 下讓使用者選擇目錄方式:

OpenDialog 元件是讓使用者選檔案,那選目錄要使用什麼方式呢?

USE QDialogs

procedure TForm1.cxButton1Click(Sender: TObject); var   Dir: WideString; begin   if SelectDirectory(‘請選擇目錄’, ”, Dir) then   begin     ShowMessage(Dir);   end; end;

SelectDirectory(‘請選擇目錄’, ”, Dir)

第一個參數為提示文字,第二個參數可設定預設目錄,第三個參數為使用者選取目錄後的目錄路徑

可對SelectDirectory按F1查詢使用方式,還有VCL的用法可用,代的參數又不一樣,有興趣的可研究一下。

DELPHI 7 使用ADO元件寫入資料庫強制四捨五入小數到第四位問題

DELPHI 7 使用ADO元件寫入資料庫強制四捨五入小數到第四位問題

parameters.parambyname(‘tmpprice’).datatype:=ftFloat;   <==寫入資料前先將欄位設定成 Float 型態即可解決此問題。

參考:http://jzinfo.javaeye.com/blog/432853

var  
    adoquery1:Tadoquery;  
begin  
    adoquery1:=Tadoquery.create(nil);  
    try  
       if not DM.adonconnection1.connected then  
           DM.adoconnection1.connected:=true;  
       adoquery1.connection:=DM.adoconnection1;  
       adoquery1.enableBCD:=False;       //禁用bcd类型  
       with adoquery1 do  
       begin  
           close;  
           sql.clear;  
           sql.add(‘insert into materialInfo values(:tmppno,:tmpvendor,:tmpdesc,:tmpprice)’);  
           parameters.parambyname(‘tmppno’).value:=trim(edit1.text);  
           parameters.parambyname(‘tmpvendor’).value:=trim(edit2.text);  
           parameters.parambyname(‘tmpdesc’).value:=trim(edit3.text);  
           parameters.parambyname(‘tmpprice’).datatype:=ftFloat;       //设置下数据类型  
           parameters.parambyname(‘tmpprice’).value:=trim(edit4.text);  
           execsql;  
       end;   […]

DELPHI下使用FileSetDate()函式修改檔案的”修改日期”

Delphi下使用function FileSetDate(Handle: Integer; Age: Integer): Integer; overload;函式修改檔案的”修改日期”:

參考:http://delphi.ktop.com.tw/board.php?cid=30&fid=70&tid=37667

procedure TForm1.Button1Click(Sender: TObject); Var     FileHandle : Integer;     Str : String; begin     FileHandle := FileOpen(‘D:\prog\1.txt’, fmOpenReadWrite);     if FileHandle = -1 then       ShowMessage(‘開啟檔案失敗’) […]

DELPHI 完整檔名路徑下取檔名去除路逕與去除附檔名

ExtractFileName(FileName);  //去除檔案的路徑

ChangeFileExt(FileName);     //去除副檔名

DELPHI寫入EXCEL時,寫入速度緩慢問題

最近在修改使用者提出 EXCEL 報表欄位,發現有幾支 procedure 轉出 EXCEL 的速度非常龜,而這幾支 procedure 是前輩所留下的產物,跟自己最近寫的轉 EXCEL 報表速度上差很多,以為是卡在SQL查詢,如果查詢條件KEY值給不齊全,有可能因為資料過多,查詢變很慢,但是測試後應該不是SQL查詢的問題,再對照前輩與自己的程式,感覺不出差異,最後看到 DELPHI 內設定EXCEL時前面通常會有一些基本設定,發現了這幾支程式都有設定列印範圍,姑且註解掉試試看,果然……………兇手就是它!

PageSetup.PrintArea := ‘A:R’;  //設定列印範圍

建議把它移到資料轉完後,最後在給上這個參數就好了。

DELPHI 7 下將文字存成UTF8格式

上網找到下面的程式碼,修了一下測試,真的可以耶!!!!最近的程式剛好有UTF8編碼的困擾,使用這方式轉是方便多了,不過還要測試會不會有問題。

討論區:http://delphi.ktop.com.tw/board.php?cid=30&fid=76&tid=89562

procedure TForm1.Button1Click(Sender: TObject); var   S:UTF8String;   F:TextFile;   TntEdit1: TStringList; begin   TntEdit1 := TStringList.Create;   TntEdit1.Add(‘我是天才我是天才我是天才’);   S:=UTF8Encode(TntEdit1.Text); […]