呼叫dll時,變數宣告的問題~ |
尚未結案
|
yoyo12345
一般會員 發表:33 回覆:77 積分:22 註冊:2003-03-19 發送簡訊給我 |
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
|
yoyo12345
一般會員 發表:33 回覆:77 積分:22 註冊:2003-03-19 發送簡訊給我 |
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
这是帮助中的char完整定义: Character types(字符类型) 基本字符类型是AnsiChar 和WideChar。AnsiChar 是8 位字符集,它们将依照本地字符集的顺序排列,这可能是多字节的。AnsiChar 原先是根据ANSI 字符集建立的,但现在扩展为可以指定本地字符集。WideChar 使用多于一个字节来表示每个字符。在当前实现中,WideChar 依据Unicode 字符集(要意识到它的实现将来可能会改变),使用一个字的宽度(16-bit)来存储字符。开头的256 个Unicode 字符对应于ANSI 字符。
一般字符类型是Char,它相当于AnsiChar。因为Char 的实现可能被迫改变,所以,在需要处理不同大小的字符时,应该使用SizeOf 而不要使用硬编码常数,这通常是个好主意。
一个长度为1 的字符串常量,比如'A',可以表示一个字符。内置函数Chr,返回一个在AnsiChar 或WideChar取值范围内任意一个整数的字符值。比如,Chr(65)返回字母A。字符和整数一样,当因为增加或减少而超过它的取值范围的开头或尾部时,它的值将回转(除非开启了边界检查)。比如,下面的代码执行后
var
Letter: Char;
I: Integer;
begin
Letter := High(Letter);
for I := 1 to 66 do
Inc(Letter);
end;
Letter 的值将是A(ASCII 值为65)
|
speedup
資深會員 發表:19 回覆:259 積分:280 註冊:2003-07-04 發送簡訊給我 |
引言: 呃~~我打太快,打錯了啦~~ var bb:array[0..255]of char; char不是只有256個位元嗎? 為什麼可以這樣用? var str:array[0..300] of char;char 為字元型態,記憶体佔用一個位元組(1個Byte= 8 bit,2的8次方因此能夠表達256種字元符號 var bb:array[0..300] of char 基本上array[0..n] of 型態 ,是用來宣告陣列,其中陣列長度[0..n]要定義多少完全是程式設計自己決定,不會受後面所接的型態(不管是Char,byte,Word,integr)所限,會影響的只是所占計憶体大小(陣列長度* 型態大小) 因此宣告 array[0..255] of char 會佔256個byte, array[0..300] of char會佔301個byte 另外純屬個人建議,dll的函數宣告字串可用WideString,可免去自行配置與管理字串計憶体的程式碼 唉~
------
唉~ |
yoyo12345
一般會員 發表:33 回覆:77 積分:22 註冊:2003-03-19 發送簡訊給我 |
|
yoyo12345
一般會員 發表:33 回覆:77 積分:22 註冊:2003-03-19 發送簡訊給我 |
|
sos_admin
版主 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
这样使用pchar procedure TForm1.Button1Click(Sender: TObject);
var
pchr:pchar;
i:integer;
Mychr: array[0..300] of char;
begin
StrCopy(Mychr, 'sos_admin !');
pchr:=@Mychr;
for i:=StrLen(Mychr) downto 0 do
begin
showmessage(pchr^);
inc(pchr);
end;
end;
|
yoyo12345
一般會員 發表:33 回覆:77 積分:22 註冊:2003-03-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |