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 (記載なし)
Copyright © 2013 Power Future Co., Ltd.