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

Вниз

Invalid typecast {handle:=LoadLibrary(PChar(PluginList   Найти похожие ветки 

 
Алексей   (2004-01-22 13:29) [0]

procedure FindPlugin;// Поиск плагинов

type
TGetNProc=function:shortstring;

var
sr:TSearchRec;
i:byte;
pgetn:TGetNProc;

begin
i:=0;
SetLength(PluginList,255);
if FindFirst("smpp_*.dll",faAnyFile,sr) = 0 then begin
repeat
PluginList[i]:= sr.Name;
inc(i);
until FindNext(sr) <> 0;
FindClose(sr);
SetLength(PluginList,i);
for i:=0 to length(PluginList) - 1 do begin
handle:=LoadLibrary(PChar(PluginList[i]));
if handle <> 0 then begin
@pgetn:=GetProcAddress(handle, "GetPluginName");
PluginList[i]:=pgetn;
AppendMenu(GetSystemMenu(handle, FALSE), MF_SEPARATOR, 0, "");
AppendMenu(GetSystemMenu(handle, FALSE), MF_STRING,SC_MyMenuItem, P Char(PluginList[i]));
end
end
end
else begin
ShowMessage("Не найдено подключаемых модулей");
PluginList:=NIL;
end;
end;// FindPlugin
{----------------------------------}
Короткие пояснения: ( PluginList – динамический массив ShortString)
Задача – найти плагины для проги (они содержат формы), изменить главное меню оной проги (добавить названия плагинов в меню открыть) и обеспечить запуск найденных плагинов.
Ошибка возникает в этих строках:
handle:=LoadLibrary(PChar(PluginList[i])) и
AppendMenu(GetSystemMenu(handle, FALSE), MF_STRING,SC_MyMenuItem, PChar(PluginList[i])); (Invalid typecast).
ПыС: сильно ногами не бейте – первая более - менее серьёзная программа (в целях обучения).


 
Игорь Шевченко   (2004-01-22 13:33) [1]

http://www.delphikingdom.com/mastering/plugins.htm


 
YuRock   (2004-01-22 13:34) [2]

Потому-что не понятно, что такое PluginList


 
icWasya   (2004-01-22 13:49) [3]

PChar и ShortString несовместимы, поскольку скорее всего в ShortString нет завершающего #0. Если руками добавить завершающий #0, то вместо PChar ( PluginList [i] ) можно использовать @ ( PluginList [i] [1] )


 
Алексей   (2004-01-22 14:26) [4]

Спасибо. На самом деле понял через пять минут - решаеться простой заменой ShortString на String. Так что дело не в несовместимости (ведь String не имеет #0 в конце). Между прочим странно - пока я не начал пытаться работать с меню всё спокойно компилилось и с ShortString
2YaRock: читайте внимательнее - там написано, что PluginList массив ShortString


 
VMcL   (2004-01-22 15:26) [5]

>>Алексей (22.01.04 14:26) [4]

String, который AnsiString, очень даже имеет #0 в конце, а вот ShortString - нет.


 
Palladin   (2004-01-22 15:31) [6]


> Алексей (22.01.04 14:26) [4]

Это как это дело не в совместимости?
ShortString есть массив, а String есть указатель на массив (что и является по сути PChar).
Можно работать и с ShortString, только:
var
ss:shortstring;
...
ss:=ss+#0;
handle:=LoadLibrary(PChar(@ss));


 
Palladin   (2004-01-22 15:36) [7]

точнее LoadLibrary(PChar(@ss[1]));



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

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

Наверх





Память: 0.46 MB
Время: 0.029 c
1-16388
Nimnull
2004-01-23 16:46
2004.02.06
Currency


6-16582
Не знающий
2003-12-04 14:22
2004.02.06
Подключить диск.


1-16250
Petrovitch
2004-01-26 15:27
2004.02.06
Корректировка поля в DBGRID (SQL) как???


1-16464
Евгения
2004-01-27 23:06
2004.02.06
Нет страницы Report.


4-16803
Asteroid
2003-11-28 03:20
2004.02.06
Поворот DC





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский