function TForm1.StrUpper(Dest, Source: PChar; MaxLen: Integer): PChar;
var
I: Integer;
begin
I := 0;
while (I < MaxLen) and (Source[I] <> #0) do
begin
Dest[I] := UpCase(Source[I]);
Inc(I);
end;
Dest[I] := #0;
Result := Dest;
end;下面调用:
var
dest:array of PChar;
dest2:array[0..255] of char;
begin
Edit1.Text:=StrUpper(dest,PChar(Edit2.Text),12); 不正确,
Edit1.Text:=StrUpper(dest2,PChar(Edit2.Text),12); 正确的。
end;能解释一下为什么吗?
var
I: Integer;
begin
I := 0;
while (I < MaxLen) and (Source[I] <> #0) do
begin
Dest[I] := UpCase(Source[I]);
Inc(I);
end;
Dest[I] := #0;
Result := Dest;
end;下面调用:
var
dest:array of PChar;
dest2:array[0..255] of char;
begin
Edit1.Text:=StrUpper(dest,PChar(Edit2.Text),12); 不正确,
Edit1.Text:=StrUpper(dest2,PChar(Edit2.Text),12); 正确的。
end;能解释一下为什么吗?
解决方案 »
- 想学DELPHI,不知如何下手
- 预编译指令 {$DEFINE MESSAGE_REGISTRY_CLEAN 10000} 放在哪合适?
- 200分赠送 Formula One 6.0问题 F1book
- 按钮中事件!很简单,很简单,很急!
- 如何蜕变成DELPHI的开发高手?
- 请问这方面书的下载地址《数据结构》《软件工程》《编译原理》
- form上怎么用快捷键??
- 一个送分的题!!!!
- 100元解决这问题,真是气死我了,我就不相信csdn没有一个高手
- 请问网上和书店哪儿能找到串口通信编程的详细资料(DELPHI4.0 OR UP)
- 500分求关于DLL中,如何动态加载JPEG图片的问题?加分100
- 树形问题(简单问题)
改为
Dest, Source: stringSource[I]这种方式,Source要声明为string类型
如果是事先设定了dest的大小,就不会有问题了
没有分配内存
Edit1.Text:=StrUpper(dest2,PChar(Edit2.Text),12); 正确的。
静态数组,已经分配内存了
var
dest,s :PChar;
begin
s := 'abcdEFGh';
Dest := nil;
GetMem(dest,8);
edt1.Text := StrUpper(dest,s,8);
FreeMem(dest);
end;function TForm1.StrUpper(Dest, Source: PChar; MaxLen: Integer): PChar;
var
I: Integer;
begin
I := 0;
while (I < MaxLen) and (Source^ <> #0) do
begin
Dest^ := UpCase(Source^);
inc(dest);
inc(Source);
Inc(I);
end;
inc(Dest,-8);
Result := Dest;
end;