掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TMemoryStreamを引数に使ったプログラムの作り方について (ID:11689)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
こんにちは、 最初に Delphi だけでなく C++Builder の両方についての 質問になり恐縮ですが、 目的:呼び出し側を Delphi で作成し、DLL側を C++Builder で作成します。 理由:C++Builder の処理コンポーネントを使用したいのですが、 Delphi に簡単に移植できないので、C++Builder で DLL を作成して、このコンポーネントで処理した結果のデータを 利用すれば・・・と思ったのですけど、うまくいきません。 何か考え違いしているのかもしれませんので教えてください 以下が現状のプログラムのコードです。 よろしくお願いします. ≡≡≡≡≡ Delphi 側 ≡≡≡≡≡ function FLoad(Fname: PChar; MStream: TMemoryStream): Boolean; stdcall; external 'DLLTest.dll' name 'FileLoad'; : implementation : procedure TForm1.Button1Click(Sender: TObject); var FileName: String; begin MStream := TMemoryStream.Create; try if OpenDialog.Execute then begin FileName := OpenDialog.FileName; MStream.Position := 0; FLoad( PChar(FileName), MStream); RichEdit.Text := 'Size = ' + IntToStr(MStream.Size); end; finally MStream.Free; end; end; ≡≡≡≡≡≡≡ C++Builder側 ≡≡≡≡≡≡≡ extern "C" __declspec(dllexport) bool __stdcall FileLoad(PChar FName, TMemoryStream *MStream); #pragma argsused int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved) { return 1; } //--------------------------------------------------------------------------- bool __stdcall FileLoad(PChar FName, TMemoryStream *MStream) { try { MStream->LoadFromFile( FileName ); return( true ); } catch (...) { return( false ); } }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.