Delphiで使用するDLLの作成 – プログラミング – Home

Delphiで使用するDLLの作成
 
通知
すべてクリア

[解決済] Delphiで使用するDLLの作成


とんぼ
 とんぼ
(@とんぼ)
ゲスト
結合: 21年前
投稿: 27
Topic starter  

Delphiで使用するDLLを作成したいのですが
例えば以下のように、文字列を取得した場合は
どのように関数を定義するべきなのでしょうか。

1.CString get()
2.void get(CString str)
3.void get(char *str)
4.*char get()

1,2は、CStringなんかDelphiで使えそうも無い。
4は、スタックに入れたらなくなっちゃうし
ヒープに入れたら開放しなくちゃいけないし、無理そう。

3が妥当でしょうか?

環境:Windows2000,VC++6.0


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

ですね。
ただ、呼び出し側から与えた 格納領域を超えてしまうケースを考慮したほうが良かろうかと。
たとえば

int get(char* buffer, int size);
領域(buffer)とその大きさ(size)を与える。
返り値は格納された文字列の長さ、-1ならオーバフロー

とか。


返信引用
とんぼ
 とんぼ
(@とんぼ)
ゲスト
結合: 21年前
投稿: 27
Topic starter  

ありがとうございます。
また、
int get(char* buffer, int size);
の案も必要そうならこの案でいこうかと思います。
(Delphiを触ったことがなく、現状↑で本当に良いかどうか判断が
できないもので)


返信引用
とんぼ
 とんぼ
(@とんぼ)
ゲスト
結合: 21年前
投稿: 27
Topic starter  

解決にしていたのですが、気になったことがひとつ。
戻り値に STLのstring を使用することはできるのでしょうか。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

std::string を受け取った Delphi はどうすりゃいいんです?
第一ヘッダがないでしょうに


返信引用
とんぼ
 とんぼ
(@とんぼ)
ゲスト
結合: 21年前
投稿: 27
Topic starter  

STLもDelphiもよく知らないのに思いつきで質問してしまいました。すいません。
stringをDelphiのStringに勝手に変換してくれないかなぁと甘い期待をしました。
今、調べてみたら
>Delphi の String 型は,初めの 1byte 目に文字列の長さが格納されているため
という文章を見つけました。変換してくれそうもないですね。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました