이 오류가 발생하여 델파이 7에 있던 프로젝트를 디버깅하고 델파이 XE2로 업그레이드하고 여러 가지 방법으로 같은 오류가 발생합니다.
First chance exception at $006DC660. Exception class $C0000005 with message 'access violation at 0x006dc660 read of address 0xffffffff'
이는 방법 중 하나입니다 : 내가 검색 좀 나는 비슷한 문제를 설명하는 사람을 발견, 그가 증분 링커되지 않습니다 때 작동 긍정
PFI = ^TFI;
TFI = record
Id : TToken;
Name : TName;
Parameters : string;
end;
function TListFI.IsIn(S: PChar): PFI;
function SearchName2(Item: PFI):Boolean;
var N1, N2: PChar;
begin
N1:= StrNew(Item^.Name);
N2:= StrNew(S); //Here is the issue
SearchName2:= (StrComp(StrUpper(N1), StrUpper(N2)) = 0);
StrDispose(N1);
StrDispose(N2);
end;
begin
IsIn:= PFI(FirstThat(@SearchName2));
end;
, 누군가가 말해 줄 수 이 상황을 해결하기 위해 무엇을 어디서 또는 제공 할 것인지 조언 해주십시오. 이제 @ 분리
는[EDIT]
| SIN 나에게 다음과 같은 오류를 범 = PFI (FirstThat (SearchName2));
E2010 Incompatible types: 'TObject' and 'PFI'
제가 도움이 될지 확인하기 위해 FirstThat 절차를 추가하고 있습니다. S
유형 PChar
의입니다
TFuncionColeccion = function (Elemento: TObject): Boolean;
function TColeccion.FirstThat (Rutina: TFuncionColeccion): TObject;
var
i: Integer;
begin
For i:=0 to Count-1 do
if Rutina(Items[i]) then
begin
FirstThat:=Items[i];
exit;
end;
FirstThat:=nil;
end;
무엇이'StrNew'를 사용하게 만들었습니까? 첫 번째 단계는 내 코드베이스에서 삭제하는 것입니다. –
나는이 프로젝트를 받았고 몇몇 학생들의 손에 들어갔다. 무엇이 insted 사용할 수 있고 왜 그것을 expunge? 주소를 추가하겠습니다. – sandiego
null로 끝나는 문자열의 힙 할당에는주의 깊은 메모리 관리가 필요합니다. 코드가 누수로부터 보호하기 위해 try/finally 루프를 빠뜨린다. 오늘의 델파이에서는'string'을 사용할 것입니다. 당신은'PAnsiChar'와'PWideChar'를 간단한 할당 인'string'으로 직접 변환 할 수 있습니다. –