입력된 데이터입니다.
최종결과도 아래 순서로 나와야 합니다.
'0001' '홍길동1'
'0002' '홍길동2'
'0003' '홍길동3'
'0004' '홍길동4'
그렇지만
배열에 들어간 결과입니다.
'0003' '홍길동3'
'0004' '홍길동4'
'0003' '홍길동3'
'0004' '홍길동4'
디버그를
걸어보면 아래와 같습니다.
1번째 디버깅시 : '0001' '홍길동1' <-- 정상
2번째 디버깅시 : '0001' '홍길동1' <-- 정상
'0002' '홍길동2' <-- 정상
3번째 디버깅시 : '0003' '홍길동3' <-- 여기부터 이상하게 들어갑니다.
'0002' '홍길동2'
'0003' '홍길동3'
4번째 디버깅시 : '0003' '홍길동3'
'0004'
'홍길동4'
'0003' '홍길동3'
'0004' '홍길동4'
소스입니다.
type
ParmArray = Array
of PChar;
function
Member_Search_Name_Array( MemberName : PChar ) : ParmArray; stdcall; export;
var
RecordNum : Integer;
RecordCnt : Integer;
begin
RecordCnt := Fields[12].AsInteger;
SetLength( Result,
RecordCnt );
while not Eof do
begin
for RecordNum := 0 to RecordCnt - 1 do
begin
Result[ RecordNum ] := PChar( FormatFloat( '0000', RecordNum + 1 ) + ' , ' +
Fields[00].AsString + ' , ' +
Fields[01].AsString + ' , ' +
Fields[02].AsString + ' , ' +
Fields[03].AsString + ' , ' +
Copy(Fields[04].AsString, 8, 7 ) + ' , ' +
Fields[05].AsString + ' , ' +
Fields[06].AsString + ' , ' +
Fields[07].AsString + ' , ' +
Fields[08].AsString + ' , ' +
Fields[09].AsString + ' , ' +
Fields[10].AsString + ' , ' +
Fields[11].AsString );
ShowMessage( Result[ RecordNum ] );
Next;
Application.ProcessMessages;
end;
end; // while-end
end;
StrNew가 빠진듯 합니다.
StrNew(PChar(FormatFloat(... 같이 해보세요
물론 어딘가에 StrDispose도 넣어줘야 합니다.