1.
type
TArray = array of string;
procedure TrimChar(s:string;var sRet : TArray);
function CountChar(s:string; c:char):integer;
var
i : integer;
begin
result := 0;
for i := 1 to Length(s) do
if s[i] = c then Inc(result);
end;
var
iPos : integer;
i : integer;
begin
SetLength(sRet, CountChar(s, ',') + 1);
iPos := Pos(',', s);
i := 0;
while iPos > 0 do
begin
sRet[i] := Copy(s, 1, iPos - 1);
Delete(s, 1, iPos);
iPos := Pos(',', s);
Inc(i);
end;
sRet[i] := s;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
sA : TArray;
s : string;
i : integer;
begin
s := 'abc,cd,mm,44';
sA := nil;
TrimChar(s, sA);
for i := Low(sA) to High(sA) do
Memo1.Lines.Add(sA[i]);
end;
2。
主程序中:
......
type
arr=array[0..32768] of double;
parr=^arr;
..............
function test(ptarr:parr):integer;stdcall;external project1.dll name 'DoM1';
procedure TForm1.Button1Click(Sender: TObject);
var
tarr:arr;
ptarr:parr;
i:integer;
begin
ptarr:=@tarr;
i:=test(ptarr); //test是DLL中的函数,我想把数组指针传进去,把所指向的数组内容在DLL中修改
edit1.Text:=floattostr(tarr[16]);
end;
动态链接库 project11.dll中:
......
type
arr=array[0..32768] of double;
parr=^arr;
function test( N:parr):integer;stdcall;
var testarray:arr;
i:integer;
begin
testarray:=N^;
for i := 0 to 32768 do
begin
testarray[i]:=i;
end;
result:=Round(N[16]);//测试用
end;