線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4979
推到 Plurk!
推到 Facebook!

delphi 2010 string轉ansichar

答題得分者是:mephise
chjunsen
一般會員


發表:38
回覆:15
積分:10
註冊:2006-10-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-10-25 11:48:45 IP:59.125.xxx.xxx 訂閱
請問
如何將STRING轉ANSICHAR


addstr: STRING
CN:ANSICHAR;

ADDSTR:='0';

CN:=PWideChar(ADDSTR); //在這邊就會出錯


謝謝
polom
一般會員


發表:15
回覆:14
積分:15
註冊:2010-08-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-10-25 12:16:32 IP:220.134.xxx.xxx 訂閱
var
addstr: STRING ;
CN:PAnsiChar;
begin
ADDSTR:='0';
CN:= PAnsiChar(ADDSTR) ;
Caption:= CN^ ;
end;

這是我的做法,你參考看看

也請高手指點
mephise
高階會員


發表:4
回覆:149
積分:205
註冊:2004-02-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-10-26 09:18:19 IP:60.250.xxx.xxx 訂閱
1.CN 不是 Pointer  所以 CN:=PWideChar(ADDSTR); 當然是不行
2.Delphi 2010 是全 Unicode系統, 所以 String 代表 UnicodeString.
如果要形態轉換只要 AnisString(addstr) 就可以了
假設 addsre = 'Hello World!';
c: AnsiChar;
c := AnsiString(addstr)[2]; // c = 'e;
3.如果要用指標
p: PWideChar;
p := @addstr;


===================引 用 chjunsen 文 章===================
請問
如何將STRING轉ANSICHAR


addstr: STRING
CN:ANSICHAR;

ADDSTR:='0';

CN:=PWideChar(ADDSTR); //在這邊就會出錯


謝謝
------
Mephise Chen
前興德工程師
chjunsen
一般會員


發表:38
回覆:15
積分:10
註冊:2006-10-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-10-28 02:25:05 IP:111.252.xxx.xxx 訂閱
大大不好意思請問一下
在delphi常看人家使用'@'
想請問這是什麼意思
謝謝
polom
一般會員


發表:15
回覆:14
積分:15
註冊:2010-08-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-10-28 09:32:25 IP:220.134.xxx.xxx 訂閱
@的意思是取「址」,也就是把取出這個變數或物件在記憶體中的位置。 0x00ffcc23等等的東西

與其相對的是

^的意思是取「值」,也就是當變數宣告為指標時,可取出變數的內容。
mephise
高階會員


發表:4
回覆:149
積分:205
註冊:2004-02-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2010-10-28 09:45:13 IP:60.250.xxx.xxx 訂閱
Delphi 跟 C++ Builder 的 Help 我個人覺得寫得非常好, 我從裡面學了很多 (坦白說,沒有Help我幾乎無法寫程式)
我節錄一下他的說明



1 var
2 X, Y: Integer; // X and Y are Integer variables (X,Y是整數變數)
3 P: ^Integer // P points to an Integer (P是整數指標,指向一個整數資料的記憶體位址)
4 begin
5 X := 17; // assign a value to X (X的值是17)
6 P := @X; // assign the address of X to P(@是一個運算符,取出物件的記憶體位址, 這行指令把X的位址指定給P, 現在 P 指向一個整數的記憶體位址, 而該位址的資料是17)
7 Y := P^; // dereference P; assign the result to Y (^也是一個運算符, 他取出記憶體位址裡的資料, 所以 ^跟@護為反運算, 這行結果導致 Y 的是17
8 end;

您問的問題就是所謂 指標(Pointer)的觀念, 在C語言裡這是基本功, 想要深入 Win32 API 的使用, 這也是必學
坦白說, 學校的 C語言課程裡, 這是必考的 ^^

希望對您有幫助
------
Mephise Chen
前興德工程師
chjunsen
一般會員


發表:38
回覆:15
積分:10
註冊:2006-10-25

發送簡訊給我
#7 引用回覆 回覆 發表時間:2010-11-01 09:46:13 IP:59.125.xxx.xxx 訂閱
感謝各位大大的指教
系統時間:2024-05-07 23:30:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!