![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема при работе с указателями [D7, WinXP]
Zilog_ © (2006-05-15 12:59:00)Уважаемые мастера, подскажите, что делаю не так:
type
TVoice = record
Data:pointer; //ññûëêà íà äàííûå
DataSize:integer;
id:integer;
FreeIt: boolean;
end;
.......
procedure TServerVoice.SendVoiceMessage(cmd:string; const buffer; BufferSize:integer; id:integer);
var
pInt:^Integer;
pBuffer:pointer;
Voice:TVoice;
DataSize:integer;
begin
DataSize:=BufferSize+6+Length(cmd);
GetMem (pBuffer, DataSize);
Voice.Data:=pBuffer;
pBuffer:=ptr(Cardinal(pBuffer)+6);
string(pBuffer^):=cmd;
pBuffer:=ptr(Cardinal(pBuffer)+length(cmd));
pChar(pBuffer^):=pChar(Buffer);
pInt:=Voice.Data;
pInt^:=DataSize;
Inc(pInt);
pInt^:=Length(cmd);
Inc(pInt);
pInt^:=BufferSize;
end;
При попытке обращения к этой функции получаю Access violation.
Плохиш (2006-05-15 13:25:00) [21]
> При попытке обращения к этой функции получаю Access violation.
Что отладчик отказывается транслировать эту функцию?
Zilog_ (2006-05-15 13:02:00) [22]Деббагер вылетает на первой попытке записи cmd: string в память, причем приращение указателя проходит норамльно