Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
var
resStream: TResourceStream;
memStream: TMemoryStream;
DLL: THandle;
tempFile: string;
excel: variant;
wbook: OLEVariant;
begin
if not IsOLEObjectInstalled('Excel.Application') then
begin
MessageBox(Handle, PChar('Для открытия фаблонов форм необходимо установить'+#13+
'Microsoft Excel'), 'Ошибка загрузки формы.', MB_ICONINFORMATION);
exit
end;
tempFile := extractFilePath(paramStr(0))+'DATA\PLUGINS\$temp$.xxx';
if ListView1.Selected = nil then exit;
if not FileExists(ListView1.Selected.SubItems.Strings[2]) then exit;
DLL := loadLibrary(PChar(ListView1.Selected.SubItems.Strings[2]));
if DLL = INVALID_HANDLE_VALUE then begin
freeLibrary(DLL);
exit
end;
resStream := TResourceStream.Create(DLL, 'FORMA', MakeIntResource(10));
memStream := TMemoryStream.Create;
memStream.LoadFromStream(resStream);
if fileExists(tempFile) then deleteFile(tempFile);
memStream.SaveToFile(tempFile);
setFileAttributes(PChar(tempFile), FILE_ATTRIBUTE_HIDDEN or
FILE_ATTRIBUTE_TEMPORARY);
memStream.Free;
resStream.Free;
freeLibrary(DLL);
excel := createOLEObject('Excel.Application');
excel.Visible := TRUE;
wbook := excel.Workbooks.Open(tempFile)
end;
когда-то кому-то в дипломнике вот такое написал. с понтом - подключаем плагины и они в эксель выводят программно новые виды форм. хотя экселевский файл тупо вкомпилен в ресурс библиотеки
Мне так приходилось делать. Чтобы в процедуру передавать компонент, в заголовок которого выводится какая-то информация о процессе обработки. В общем, передавать TCaption нельзя, передавать обобщённый TComponent не вышло, так как у одних текст - это Caption, у других - Text, у третьих такого свойтства нет (хотя у самого окна есть). Ничего лучше передачи хэндла не подошло.
MessageBox(Handle, PChar(...), ...) - че не так-то?
Handle - глобальный хендл окна формы. мессаджбокс будет от него. PChar(...) какбэ приведение типов. коряво, ну а че такого-то?
ListView1.Selected
Автору надо или трусы надеть или крест снять.
а вообще за такую неоднородность делал бы с разрабами что нибудь плохое, пока бы не взялись за ум
facepalm.php
хоть бы не позорился банальнейшим незнанием терминологии
Handle - глобальный хендл окна формы. мессаджбокс будет от него. PChar(...) какбэ приведение типов. коряво, ну а че такого-то?
КО - правильно, коровы...