Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.05.05;
Скачать: [xml.tar.bz2];

Вниз

[Error] на значении Nil   Найти похожие ветки 

 
DDF   (2003-04-22 10:40) [0]

Народ, подскажите пожалуйста. Не могу понять почему при компиляции выскакивыет ошибка на Nil:

...
ReadFile(hPort, pDat^, Available, Readed, nil);
...

Ругается:
Types of actual and formal var parameters must be identical


 
MBo   (2003-04-22 10:47) [1]

скорее не на nil, а на пред. параметры - должны быть Dword (Cardinal)


 
Skier   (2003-04-22 10:48) [2]

Видимо последний параметр в ReadFile имеет модификатор var

var
A : TSomeType;
begin
//..............
A := nil;
ReadFile(hPort, pDat^, Available, Readed, A);
//..............



 
D   (2003-04-22 10:48) [3]

А другие пар-ры каких типов?
Точно ли pDat^ или просто pDat ?


 
evvcom   (2003-04-22 10:49) [4]

Потому что фактически на var параметр передается адрес переменной. Но подставлять туда надо все же переменную, компилятор сам сделает операции адресации и разадресации. А nil - это не переменная, это константа, подразумевающая "нет адреса" или "адрес = 0"


 
Sheriff   (2003-04-22 10:53) [5]

тип Available - DWORD


 
DDF   (2003-04-22 10:58) [6]

Я скачал три компоненты для работы с COM портом но не одна не устанавливается, везде выскакивает именно эта ошибка. Возможно дело в настройках Delphi? У меня Delphi7 сейчас попробую на шестой.


 
Skier   (2003-04-22 11:00) [7]


> Возможно дело в настройках Delphi?

?!

Жутко интересно в каких...


 
Anatoly Podgoretsky   (2003-04-22 11:01) [8]

Skier © (22.04.03 10:48)
Не является, но при такой постановке вопроса можно только заниматься гаданием на кофейной гуще, что и как у него объявлено, я даже не удивлюсь, если у него окажется еще какой нибудь модуль с такой же функцией. Ну жу объявления мог бы привести.


 
Skier   (2003-04-22 11:03) [9]

>Anatoly Podgoretsky

> но при такой постановке вопроса можно только заниматься
> гаданием на кофейной гуще,

Я им и занимался...


 
DDF   (2003-04-22 11:04) [10]

Нет в 6 тоже не пашет


Вот одна из процедур на которой выскакивает ошибка

function TCommPortDriver.SendDataEx( DataPtr: pchar; DataSize, Timeout: UINT ): UINT;
var nToSend, nSent: integer;
t1: longint;
begin
{ Do nothing if port has not been opened }
Result := 0;
if not Connected then
exit;
{ Current time }
t1 := GetTickCount;
{ Loop until all data sent or timeout occurred }
while DataSize > 0 do
begin
{ Get TX buffer free space }
nToSend := OutFreeSpace;
{ If output buffer has some free space... }
if nToSend > 0 then
begin
{ Check signals }
if FCkLineStatus and (GetLineStatus = []) then
exit;
{ Don"t send more bytes than we actually have to send }
if nToSend > DataSize then
nToSend := DataSize;
{ Send }
WriteFile( FComPortHandle, DataPtr^, nToSend, nSent, nil );
nSent := abs( nSent );
if nSent > 0 then
begin
{ Update number of bytes sent }
Result := Result + nSent;
{ Decrease the count of bytes to send }
DataSize := DataSize - nSent;
{ Inc. data pointer }
DataPtr := DataPtr + nSent;
{ Get current time }
t1 := GetTickCount;
{ Continue. This skips the time check below (don"t stop
trasmitting if the Timeout is set too low) }
continue;
end;
end;
{ Buffer is full. If we are waiting too long then exit }
if (GetTickCount-t1) > Timeout then
exit;
end;
end;


Может в Uses прописать что надо
там сейчас Windows, Messages, SysUtils, Classes, Forms;


 
Skier   (2003-04-22 11:07) [11]

>DDF
Да,... Вы, батенька, никак издеваетесь ?!


> Вот одна из процедур на которой выскакивает ошибка


КАКАЯ ОШИБКА ???

В противном случае - Вам к экстрасенсу !


 
Anatoly Podgoretsky   (2003-04-22 11:14) [12]

nToSend, nSent не того типа, то есть акуальные и формальные параметры не соответствуют, вероятно и с ReadFile у тебя подобное творится, зря ты ушел от ответа в другую сторону.
Кусок кода явно откуда то бездумно скопирован.


 
DDF   (2003-04-22 11:15) [13]

Та которую описал раньше на WriteFile (Windows.pas)


 
evvcom   (2003-04-22 11:16) [14]

А может еще и на предыдущих версиях Дельфи попробовать? А потом попробовать на Билдере, а вдруг там пройдет? :)))
Во-первых, что есть WriteFile (ReadFile), его описание (прототип), в каком модуле описан? Наведи мышь на это слово, выскочит хинт, из которого будет ясно, в каком модуле Дельфи его нашел. Если хинт не выскочит, значит Дельфи его не знает, настрой пути проекта (или глобальные) на поиск модулей.
Включи нужный модуль в uses. Если такая функция есть также в другом модуле, и существует неоднозначность, то конкретизируй вызов MyUnit.WriteFile


 
Skier   (2003-04-22 11:17) [15]

>DDF
"В огороде бузина, а в Киеве дядька"


 
Anatoly Podgoretsky   (2003-04-22 11:18) [16]

evvcom © (22.04.03 11:16)
Пройдет на Д3, я говорю он бездумно скопировал


 
DDF   (2003-04-22 11:24) [17]

Спасибо ВСЕМ. Код я не копировал а скачал три разные компоненты с разных мест и на всех трех эта ошибка вот и был уверен что в коде ощибки нет. Оказалось как говорил MBo и Sheriff вместо Integer должно быть Dword.


 
Lord Warlock   (2003-04-22 11:30) [18]


> DDF (22.04.03 11:24)


Когда используешь апишные функции, при указании параметров почаще жми Ctrl+Shift+Space, и смотри, параметры какого типа требуются. Тогда не будет таких вопросов.


 
Anatoly Podgoretsky   (2003-04-22 11:37) [19]

DDF (22.04.03 11:24)
В Д3 тоже dWord, но там это будет работать.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.05.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.006 c
3-12663
dim
2003-04-16 15:10
2003.05.05
Нужен многострочный DBGrid


4-12969
Nick Denry
2003-03-06 14:11
2003.05.05
Combobox на Api


3-12605
Саня
2003-04-12 08:40
2003.05.05
Дайте рекомендацию по работе ACCESS2000 в сети


9-12597
Карлсон
2002-08-25 00:53
2003.05.05
Че за глюки такие?


14-12902
bercut
2003-04-17 17:50
2003.05.05
Всем привет заходите на сайт студентов экологического факультета





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский