일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- WIN32 SDK
- PostgreSQL
- dll
- 기초
- 초보
- 입문
- 인스톨
- 소니
- 파라미터
- winsock
- MFC
- 예제
- vb
- Delphi
- 델파이
- SQL
- 셋업
- 문자열
- 설치
- Visual Studio 2005
- SDK
- Visual Basic
- xml
- 시리얼 통신
- MySQL
- c#
- 파이어버드
- VB.NET
- 데이터베이스
- Firebird
- Today
- Total
목록ByRef (3)
프로그래밍 노트
델파이에서의 VB의 ByRef같이 참조로 변수를 넘기는 방법 unit Unit1; interface uses Forms, StdCtrls, Controls, Classes; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private procedure RefParam(var sParam : string); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var sTest : string; begin sTest := ''; RefParam(sTest); Button1.Capt..
VB에서 호출한 DLL 함수에 넘긴 파라미터의 값이 DLL 함수안에서 바뀌어진 것이 VB에서 넘긴 변수에 적용되게 하려할때, DLL 함수의 Declare에서 인수앞에 반드시 ByRef가 아니라 ByVal이 와야한다. # VB소스 Declare Function ByRefTest Lib "RefData.dll" (ByVal sData As String) As Integer # C소스 extern "C" int PASCAL EXPORT ByRefTest (char* pszData) { sprintf(pszData, "DLL TEST"); return 0; }
나는 VB를 먼저해서 그런지 C의 포인터를 이해하는데 시간이 많이 걸렸던 것같다. 머리가 안좋아서 그런지 포인터를 설명을 들어도 책을 읽어도 이해가 오는데 시간이 많이 걸렸다. 지금도 남에게 포인터를 설명하라고 그러면 그리 속시원하게 알려주지는 못하는 것같다. 포인터의 설명을 들어도 왜 포인터를 써야하는지에 대해서 이해를 특히 못했던 것같다. VB에서 프로그램을 짜다보면 종종 인수를 ByRef로 넘길때가 있다. ByRef가 이해가 간다면 그나마 포인터를 조금이나마 이해하기 쉬울 것같다. 포인터에 대한 자세한 설명은 이곳이 아니고라도 자세하게 써있는 곳이 많이 있으니까 여기에서는 VB의 ByVal, ByRef의 예제와 VC에서의 CString을 인수로 넘길때 포인터를 쓰고 안쓰고에 따라 어떻게 달라지는가에..