全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2757
推到 Plurk!
推到 Facebook!

字串長度不一問題

答題得分者是:cashxin2002
wchsieh
一般會員


發表:9
回覆:12
積分:4
註冊:2005-02-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-01 11:30:22 IP:203.66.xxx.xxx 未訂閱
我利用adoquery從excel抓出某欄位的值,塞入s1這個字串 S1:=ADOQuery1.FieldByName('PART').AsString ; 可是獨出來的長度不一 ex. abcd abc dfghjjk 我想要讓每一個值得長度都依樣,字數不足的後面補空白..該怎麼做ㄋㄟ???
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-01 11:46:04 IP:61.70.xxx.xxx 未訂閱
您好: 我自己在用的函數 function zStrFormat(Format,KeyStr:String;Count:Integer):String;overload;//產生一個長度是Count且有KeyStr的字串字串並在其中補進一個Format字串 var i,Len1,Len2:Integer; Str,TempStr:String; begin Str:=''; for i:=0 to Count-1 do Str:=Str KeyStr; Len1:=Length(Str); Len2:=Length(Format); TempStr:=Copy(Str,1,Len1-Len2); TempStr:=TempStr Format; result:=TempStr; end;
wyndog
資深會員


發表:7
回覆:362
積分:348
註冊:2004-10-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-01 11:49:26 IP:60.248.xxx.xxx 未訂閱
你可以這樣做,先 use StrUtils; 然後用 DupeString(const AText: string; ACount: Integer): string 這樣會產生重覆 ACount 次的 AText 所以,DupeString('*', 3) 就是 *** 所以你程式可以改寫成這樣 S1 := S1 DupeString(' ', 8 - length(S1));// 假設你要固定成 8 個字 要注意到的地方是,如果 S1 超過 8 個字的話,就是啥空白都沒加
wchsieh
一般會員


發表:9
回覆:12
積分:4
註冊:2005-02-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-01 12:31:25 IP:203.66.xxx.xxx 未訂閱
我有use StrUtils; 但是執行時還是出現 Undeclared identifier:Dupestring 怎麼辦
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-01 12:40:18 IP:61.70.xxx.xxx 未訂閱
您好: 我測試 reptile大大的方式是可以的,會不會是Delphi版本的問題,我delphi6
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;    type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    uses StrUtils;    {$R *.dfm}    procedure TForm1.Button1Click(Sender: TObject);
var
 S1:String;
begin
S1 := S1   DupeString(' ', 8 - length(S1));
end;    end.
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-01 12:40:27 IP:202.62.xxx.xxx 未訂閱
您好﹗    可以直接使用Format函數完成﹐如下﹕
begin
  S1 := Format('%-10s', [ADOQuery1.FieldByName('PART').AsString]);
end;
//以上10代表字串長度10﹐不足10的在字串后補空格﹐-代表左對齊﹐若不加-﹐當長度不足10時﹐空格會補在字串內容之前﹒ ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
系統時間:2024-05-10 9:15:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!