Array
(
)

Erro de Access Violation

Dan.sm
   - 26 set 2004

Por favor, me ajudem. Tenho o seguinte código de definições de tipos:
#Código

type
Long = Longint;

ERRORMSG=record
bErrClass,bErrCode,bAddHi,bAddLo:byte;
end;

PService = ^TService;

TService = record
bService, fShortCnf: byte;
wTargetAddress: Word;
wIndex, wDataLength: Word;
bTeleType: byte;
Data: record
lDate: Long;
abData: array[0..9] of Byte;
end;
awPA, awPE: array[0..9] of Word;
fpbDataPointer: PChar;
abReserve: array[0..9] of Byte;
Error: ERRORMSG;
end;


Quando eu vou utilizar esses tipos no código abaixo o programa gera um erro de Access Violation.

#Código
var
Servico:PService;
begin
Servico.bService:=3;
Servico.fShortCnf:=0;
Servico.wTargetAddress:=0;
Servico.wIndex:=11005;
Servico.wDataLength:=0;
Servico.bTeleType:=$80;
Servico.Data.lDate:=3;
end;


Alguém sabe onde está o erro deste código?


Alysson
   - 26 set 2004

Axei 2 erros......

1: a definição do PService = ^TService tem q ficar depois da definicao Tservice.. assim:


#Código

type 
Long = Longint;

ERRORMSG=record
bErrClass,bErrCode,bAddHi,bAddLo:byte;
end;

TService = record
bService, fShortCnf: byte;
wTargetAddress: Word;
wIndex, wDataLength: Word;
bTeleType: byte;
Data: record
lDate: Long;
abData: array[0..9] of Byte;
end;
awPA, awPE: array[0..9] of Word;
fpbDataPointer: PChar;
abReserve: array[0..9] of Byte;
Error: ERRORMSG;
end;

PService = ^TService;
----------------------------------------------------------------------
e a outra:

#Código
var 
Servico:PService;
begin


{kra por ser um Pointer, vc tem q reservar um espaco na memória ram com isso:}

GetMem(Servico,Sizeof(TService));

{se der erro, tente GetMem(Servico,Sizeof(PService));.
se continuar dando erro, tente GetMem(Servico);

to falando q se der erro, pq n to com delphi aberto...

}


Servico.bService:=3;
Servico.fShortCnf:=0;
Servico.wTargetAddress:=0;
Servico.wIndex:=11005;
Servico.wDataLength:=0;
Servico.bTeleType:=$80;
Servico.Data.lDate:=3;
end;



Dan.sm
   - 26 set 2004

Valeu, o problema estava mesmo na hora de eu atribuir um valor sem ter alocado memória. :wink: