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

在Delphi的Web Service中使用TByteDynArrary的怪问题!

尚未結案
seabelial
一般會員


發表:3
回覆:1
積分:0
註冊:2004-01-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-29 10:56:04 IP:218.104.xxx.xxx 未訂閱
我用一个动态数组保存文件数据,然后用WEB SERVICE发走,在DELPHI进行转换时,如果我文件的前4个字节为0,DELPHI就认为是个空数组,数据就发不过去,请大家帮忙看看是怎么回事情?Delphi为何要做这个判断? 因为一个文件前4个字节为0很正常,那不是根本就不能通过WebService发走? function ArrayIsNull(PObj: Pointer): Boolean; var P: Pointer; begin Result := not Assigned(PObj); if not Result then begin P := Pointer(PInteger(PObj)^); Result := (P = Pointer($0000)); end; end;
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-29 18:38:14 IP:211.20.xxx.xxx 未訂閱
seabelial 你好 即然要用WEB SERVICE发走(??不懂,是[發行]或[傳送]),一般來說會將資料內容經Code64編碼法,編碼成純文字的格式後才予以傳送,待傳送到對方後再予以解碼回原來的資料內容;另TByteDynArrary即相當於Array Of Byte 也等於PChar 故陣列內遇#0即代表資料結束,這是語言的行為模式即是如此,所以不能說它奇怪。 發表人 - chance36 於 2004/04/29 18:41:05
seabelial
一般會員


發表:3
回覆:1
積分:0
註冊:2004-01-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-03 07:56:01 IP:220.112.xxx.xxx 未訂閱
后来经过测试,发觉如果把头4个字节修改为有一个不为0,那么即使后面全是0也可以完全传过去,这个又怎么解释呢? 在DELPHI的SOAP相关的单元中,有个函数ArrayIsNull,不知道BORLAND为何要做这个判断,D6中都没有。 谢谢!
系統時間:2024-05-15 20:33:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!