Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2009, 16:16   #1
Above_men
Пользователь
 
Регистрация: 10.03.2008
Сообщений: 10
Восклицание помогите с кодом а то компилятор ругаеться =(

скачал исходники.. но не копиляться =( начинает ругаться вот примеры

{ *********************************** *********************************** *** }
// Execute a specified command or displays help for a command.
// The IOleCommandTarget interface enables objects and their
// containers to dispatch commands to each other. For example,
// an object's toolbars may contain buttons for commands such as
// Print, Print Preview, Save, New, and Zoom.

function InvokeCMD(WB: TWebbrowser; nCmdID: DWORD): Boolean;
var
vaIn, vaOut: OleVariant;
begin
Result := InvokeCMD(WB, True, nCmdID, 0{unassigned}, vaIn, vaOut);
end;

function InvokeCMD(WB: TWebbrowser; InvokeIE: Boolean; Value1, Value2: Integer; var vaIn, vaOut: OleVariant): Boolean;
var
CmdTarget: IOleCommandTarget;
PtrGUID: PGUID;
begin
New(PtrGUID);
if InvokeIE then
PtrGUID^ := CGID_WebBrowser
else
PtrGuid := PGUID(nil);
if WB.Document <> nil then
try
WB.Document.QueryInterface(IOleComm andTarget, CmdTarget);
if CmdTarget <> nil then
try
CmdTarget.Exec(PtrGuid, Value1, Value2, vaIn, vaOut);
finally
CmdTarget._Release;
end;
except end;
Dispose(PtrGUID);
end; и вот сдесь он ругаеться =( -[Warning] WBFuncs.pas(186): Return value of function 'InvokeCMD' might be undefined

что ето?? кто знает??? и как с етим бороться???



также есть проблэм и с етим..

{ *********************************** *********************************** *** }
// Show Printer Dialog

procedure WB_ShowPrintDialog(WB: TWebbrowser);
var
OleCommandTarget: IOleCommandTarget;
Command: TOleCmd;
Success: HResult;
begin
if WB_DocumentLoaded(WB) then
begin
WB.Document.QueryInterface(IOleComm andTarget, OleCommandTarget);
Command.cmdID := OLECMDID_PRINT;
if OleCommandTarget.QueryStatus(nil, 1, @Command, nil) <> S_OK then
begin
// ShowMessage('Nothing to print');
Exit;
end;
if (Command.cmdf and OLECMDF_ENABLED) <> 0 then
begin
/// Success := OleCommandTarget.Exec(nil, OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER, EmptyParam, EmptyParam);
case Success of
S_OK: ;
OLECMDERR_E_CANCELED: ShowMessage('Canceled by User');
else ShowMessage('Error While Printing');
end;
end
else
// ShowMessage('Printing not possible');
end;
end;

начинает ругаться на case Success of - [Warning] WBFuncs.pas(477): Variable 'Success' might not have been initialized


и последнее...

function SHLockShared; external 'shell32.dll' index 521;
function SHUnlockShared; external 'shell32.dll' index 522;
function SHFreeShared; external 'shell32.dll' index 523;
function Free; external 'comctl32.dll' index 73;


end.

ругаеться на INDEX -[Warning] IEConst.pas(1328): Symbol 'INDEX' is specific to a platform

причем на все =(((


Люди добрые помогите плиз... а то ужо голава совсем не варит... 2 день немогу понять вчем причина =(
Above_men вне форума Ответить с цитированием
Старый 20.04.2009, 16:32   #2
NotProCoder
Пользователь
 
Регистрация: 20.04.2009
Сообщений: 15
По умолчанию

>и вот сдесь он ругаеться =( -[Warning] WBFuncs.pas(186): Return value of function 'InvokeCMD' might be undefined

что ето?? кто знает??? и как с етим бороться???

У функции, тупо, нет результата, а точнее он не возвращается...

>начинает ругаться на case Success of - [Warning] WBFuncs.pas(477): Variable 'Success' might not have been initialized
Переменная ни разу не использована!

Не знаю что там с индексами импорта, но, честно говоря, можно вроде без них (точно не помню).
NotProCoder вне форума Ответить с цитированием
Старый 20.04.2009, 18:02   #3
Above_men
Пользователь
 
Регистрация: 10.03.2008
Сообщений: 10
По умолчанию

спасибо более или менее стало понятно... точней я терь хоть понял где искать =)

теперь проблема в том что бог сними с warning"ами... они нетак страшны... проблема теперь в том что нехочит запукать =( запускает и выдает ошибку " Progect ***.exe raised exxeption class EConvert fatal eror with message 'No argument for format'%". Procces stopped "

неподскажете в чем my problem?
Above_men вне форума Ответить с цитированием
Старый 20.04.2009, 18:33   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
[Warning] WBFuncs.pas(186): Return value of function 'InvokeCMD' might be undefined
результат функции может быть не определенным
а по коду она вообще неизвестно что вернет, так как в ней результату ничего не присваивается

Цитата:
[Warning] WBFuncs.pas(477): Variable 'Success' might not have been initialized
переменная может быть не инициализированной


Цитата:
procedure WB_ShowPrintDialog(WB: TWebbrowser);
var
OleCommandTarget: IOleCommandTarget;
Command: TOleCmd;
Success: HResult;
begin
if WB_DocumentLoaded(WB) then
begin
WB.Document.QueryInterface(IOleComm andTarget, OleCommandTarget);
Command.cmdID := OLECMDID_PRINT;
if OleCommandTarget.QueryStatus(nil, 1, @Command, nil) <> S_OK then
begin
// ShowMessage('Nothing to print');
Exit;
end;
if (Command.cmdf and OLECMDF_ENABLED) <> 0 then
begin
/// Success := OleCommandTarget.Exec(nil, OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER, EmptyParam, EmptyParam);
case Success of
S_OK: ;
OLECMDERR_E_CANCELED: ShowMessage('Canceled by User');
else ShowMessage('Error While Printing');
end;
end
else
// ShowMessage('Printing not possible');
end;
end;
а тут комменты так и были?
помоему они тут лишние.


Цитата:
[Warning] IEConst.pas(1328): Symbol 'INDEX' is specific to a platform
Символ 'INDEX' специфичен для платформы
то есть код работать будет только под Виндой.



кстати это не ошибки это все предупреждения
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.04.2009, 18:35   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Above_men Посмотреть сообщение
теперь проблема в том что бог сними с warning"ами... они нетак страшны... проблема теперь в том что нехочит запукать =( запускает и выдает ошибку " Progect ***.exe raised exxeption class EConvert fatal eror with message 'No argument for format'%". Procces stopped "

неподскажете в чем my problem?
так ты покажи на какой строке кода тормозит она, то есть вылетает
воспользуйся трасировкой
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.04.2009, 18:49   #6
Above_men
Пользователь
 
Регистрация: 10.03.2008
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
так ты покажи на какой строке кода тормозит она, то есть вылетает
воспользуйся трасировкой
вот сам код

// Show Webbrowser Progress
// OnProgressChange Occurs when the progress of a download operation is updated.

procedure TfrmMyBrowser.WebBrowser1ProgressCh ange(Sender: TObject; Progress, ProgressMax: Integer);
var
Position: Integer;
begin
try
Position := (Progress * 100) div ProgressMax;
ProgressBar1.Position := Position;
StatusBar1.Panels[0].Text := Format('%d "% loaded..."', [Position]);
except

end;
end;


вылетает на StatusBar1.Panels[0].Text := Format('%d "% loaded..."', [Position]);

сори что то сразу неподумал так сделать =(


спасибо за предыдушие ответы.... очень помогли разобраться.. особенно с индексом...

только по 1 проблеме я чет не понимаю... так как совсем долек от етого всего =( немогли бы вы привести пример решения???
Above_men вне форума Ответить с цитированием
Старый 20.04.2009, 20:33   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

попробуй сделать так:
вместо StatusBar1.Panels[0].Text := Format('%d "% loaded..."', [Position]);
напиши StatusBar1.Panels[0].Text:=IntToStr(Position)+'% loaded';
а так мне кажется что ошибка изза знака процента в функции
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.04.2009, 21:26   #8
Above_men
Пользователь
 
Регистрация: 10.03.2008
Сообщений: 10
По умолчанию

запустилось =) но статус бар при загрузке незаполняеться....
пытаюсь разобраться... но пока не понятно =(

почти довел все до совершенства =) все ворнинги исправлены...

осталось только смелочью разобраться... и статус бар... и все =)
Above_men вне форума Ответить с цитированием
Старый 20.04.2009, 21:40   #9
Above_men
Пользователь
 
Регистрация: 10.03.2008
Сообщений: 10
По умолчанию

нашел еше глюк....

когда открываю новую страницу...
вылетает с ообшением DivisonByZero на строке
Position := (Progress * 100) div ProgressMax;

впринципи понятно почему =) из за того что унас максимальный прогрес на новой странице равен 0... а на ноль как говориться делить нельзя =)

даааа.... попробуем разобраться... может есть у кого идеи ?
Above_men вне форума Ответить с цитированием
Старый 21.04.2009, 07:21   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
procedure TfrmMyBrowser.WebBrowser1ProgressChange(Sender: TObject; Progress, ProgressMax: Integer);
var
Position: Integer;
begin
 try
  Position := (Progress * 100) div ProgressMax;
 except
  Position:=0;//или 100, тут сам разберешься
 end;
 ProgressBar1.Position := Position;
 StatusBar1.Panels[0].Text:=IntToStr(Position)+'% loaded';
end;
можно попробывать так

при запуске из под Дельфи ошибка покажется вне зависимости от защищенных блоков
(если конечно не отключен показ ошибок)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 21.04.2009 в 07:23.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с кодом DM_bite Помощь студентам 12 02.08.2008 11:40
Помогите с кодом Кронос Общие вопросы Delphi 6 04.05.2008 21:13
Помогите с кодом prostoCHEL Общие вопросы Delphi 4 02.03.2008 21:56