일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Firebird
- vb
- MySQL
- PostgreSQL
- 예제
- 설치
- 인스톨
- 초보
- 소니
- Visual Studio 2005
- Delphi
- 셋업
- c#
- 델파이
- MFC
- SDK
- VB.NET
- 기초
- 입문
- winsock
- 데이터베이스
- dll
- Visual Basic
- 파이어버드
- 시리얼 통신
- SQL
- WIN32 SDK
- 파라미터
- 문자열
- xml
- Today
- Total
프로그래밍 노트
델파이에서 DLL에 문자열 넘기고 받기 본문
문자열 넘기고 받는 간단한 C의 DLL 소스
char szTemp[50];
extern "C"
{
// DLL 문자열 인수 입력
BOOL PASCAL EXPORT SetStr(char *pszSend)
{
sprintf(szTemp, "%s", pszSend);
return true;
}
// DLL 문자열 인수로 문자열 넘겨주기
BOOL PASCAL EXPORT GetStr(char *pszSend)
{
sprintf(pszSend, "%s + %s", szTemp , szTemp);
return true;
}
}
DLL에서 문자열을 주고 받기 위해서는
델파이에서 PChar형으로 문자를 DLL에 넘겨주고 받으면 된다.
문자열을 넘기고 받는 델파이 소스
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, TeEngine, Series, TeeProcs, Chart;
type
TfrmMain = class(TForm)
btnTest: TButton;
edtStr: TEdit;
lblStr: TLabel;
edtNo: TEdit;
lblNo: TLabel;
procedure btnTestClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
// DLL에서 문자열을 넘겨주고 받기 위해서는 PChar형을 쓴다.
function SetStr(psStr:PChar):integer; stdcall; external 'dtest.dll';
function GetStr(psStr:PChar):integer; stdcall; external 'dtest.dll';
procedure TfrmMain.btnTestClick(Sender: TObject);
var
nNo:Integer;
psStr:PChar;
sString:String;
nWork:Integer;
begin
// 문자열 초기화
psStr := Nil;
// 문자열 사이즈 잡기
psStr := AllocMem(50);
sString := edtStr.Text;
// String형을 PChar형으로 캐스트
psStr := PChar(sString);
// dll에 문자열 입력
SetStr(psStr);
// 문자열 초기화
psStr := Nil;
// 문자열 사이즈 잡기
psStr := AllocMem(50);
// dll에서 문자열 가져오기
GetStr(psStr);
// PChar형에서 String형으로 바꾸기
sString := StrPas(psStr);
lblStr.Caption := sString;
if psStr <> Nil then FreeMem(psStr);
end;
end.