PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
21971 05/05/17 13:25:32 RE(6):IPアドレスの取得 By ろいたん
21969 05/05/16 12:47:15 RE(5):IPアドレスの取得 By Taka
21968 05/05/16 11:00:01 RE(4):IPアドレスの取得 By ろいたん
21967 05/05/14 01:55:28 RE(3):IPアドレスの取得 By Taka
21966 05/05/13 11:24:33 RE(2):IPアドレスの取得 By ろいたん
21964 05/05/12 19:04:50 RE(1):IPアドレスの取得 By あすかちゃんの父
21960 05/05/12 10:34:17 IPアドレスの取得 By ろいたん

カテゴリ:スクリプトの記述
日付:2005年05月16日 11:00 発信者:ろいたん
題名:RE(4):IPアドレスの取得

Takaさん、こんにちは。

>過去ログNo.14277に書いたのは、たぶんPB5時代のコードです。
>PB6以降では、参照渡しの引数の型チェックが厳密になったためコンパイルエラーになると思います。

ありがとうございます。
私が初めて使ったPBは8でした。
今は9.0ですが、未ださっぱり分からないまま、新規作成や機能追加を命じられています。

>>subroutine RtlMoveMemory( ref long buf, long p, long s ) library \"kernel32.dll\"

>この部分を、
>subroutine RtlMoveMemory( ref ulong buf, long p, long s ) library \"kernel32.dll\"
>にしてみてください。


>ちなみに

>>WSADATA{
>> ulong wVersion;
>> ulong wHighVersion;

>これも間違いでした。
>正しくは uint です。失礼しました。

ん?なかなかうまくいきません。
現在のスクリプトは以下の通りです。

*グローバル外部関数の宣言*
//IPアドレス取得用
function long WSAStartup(uint wVersionRequested, ref WSADATA lpWSAData) library \"wsock32.dll\"
function long WSACleanup() library \"wsock32.dll\"
function long gethostname(ref string strName, long namelen) library \"wsock32.dll\"
function long gethostbyname(string strName) library \"wsock32.dll\"
function long inet_ntoa(ulong addr) library \"wsock32.dll\"
subroutine RtlMoveMemory( ref hostent buf, long p, long s ) library \"kernel32.dll\"
subroutine RtlMoveMemory( ref ulong buf, long p, long s ) library \"kernel32.dll\"

*スクリプトf_getipaddress*
(略)
long p_addr, addr, n
blob{80} addr_buf
string s_addr

RtlMoveMemory(p_addr, host.h_addr_list, 4 )  
RtlMoveMemory(addr_buf, p_addr, 80 )
.
.
(略)


やはりRtlMoveMemoryの部分で関数の参照引数のデータ型が定義と異なっています。
というエラーになってしまいました。


付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS (記載なし)
DBMS (記載なし)
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.