Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Значение формальных и фактических параметров различается!!!!!!!!! [D5, D7, Win2k, WinXP]


Dust ©   (2005-10-13 14:28:00) 

function calc_addr (const pd : Pointer; const shift1, shift2 : dword) : Pointer;
Procedure Retrive_chars (const pdata : Pointer; const shift : dword; const pstr : Pchar; var ln : byte);

implementation
Procedure Retrive_chars (const pdata : Pointer; const shift : dword; const pstr : Pchar; var ln : byte);
begin
 if ln = 0 then
  begin
   while Byte(calc_addr(pdata,shift,ln)^) <>0 do
   begin  pstr[shift-ln]:=Char(calc_addr(pdata, Shift, ln)^); inc(ln);   end;
  end
 else
  CopyMemory (pstr, calc_addr(pdata,shift,ln), ln);
 pstr[ln]:=#0;
 pstr[ln+1]:=#0;
end; //Procedure Retrive_chars

function calc_addr (const pd : Pointer; const shift1, shift2 : dword) : Pointer;
begin
Result :=Pointer(dword(pd)+shift1+shift2);
end;


вызов:

...
       DataLn:=0; Retrive_chars (cmd, Shift, Source_addr, DataLn);
       inc (Shift, DataLn+1);
...

На вход процедуры я подаю одно значение (cmd) а внути процедуры значение указателя совсем другое точнее он вообще на потолок показывает.... :(((
в отладчике: передача параметра pdata происходит через регистр EAX.
что делать как с этим бороться????


Dust   (2005-10-13 15:21:00) [1]

и в функции к тому же ошибка...


Dust   (2005-10-13 15:08:00) [2]

всё, спасибо
ТЕМА ЗАКРЫТА
я чуть чуть раньше портил память....
прошу прощенья за беспокойство


Digitman   (2005-10-13 15:00:00) [3]


> декларация, как ты и просил


я просил декларацию ФАКТИЧЕСКОГО параметра, который у тебя передается в кач-ве формального cmd-параметра метода SMSfrom_deliver_smCMD ..

мало ли какой указатель (и на что он указывает) ты фактически передаешь этим параметром ! .. это ж нужно видеть, прежде чем какие-то умозаключения делать) ...


> с различием значений формальных и фактических параметров


у формального параметра нет никаких "значений" - у него есть лишь имя и тип

значение же есть только у факт.параметра


Dust   (2005-10-13 14:47:00) [4]

Может быть я что-то не знаю, или чего-то не понимаю?
логика подсказывает что такого быть не может...
ктонибудь уже с таким сталкивался?


Dust   (2005-10-13 14:41:00) [5]

2 Digitman
декларация, как ты и просил:
Function TServiceShortMessage.SMSfrom_deliver_smCMD (const cmd : Pointer; const size : DWORD): pData_from_deliver_sm;
>с чем ? с передачей 1-го параметра через EAX ?
с различием значений формальных и фактических параметров


Digitman   (2005-10-13 14:35:00) [6]

для начала приведи текст декларации идент-ра cmd


> передача параметра pdata происходит через регистр EAX.


и что в том удивительного ?


> что делать как с этим бороться????


с чем ? с передачей 1-го параметра через EAX ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо