Вверх ↑
Этот топик читают: Гость
Ответов: 1731
Рейтинг: 68
#1: 2012-01-02 18:31:52 ЛС | профиль | цитата
После моих мучений с vbs я попробовал сделать свой компонент.
Может кому понадобится.
Компонент позволяет узнать версию файла (exe/dll).
filever.rar
Работает на FPC и на De1phi.
Спасибо, за внимание !
карма: 1

1
файлы: 1filever.rar [46.8KB] [272]
Голосовали:ser_davkin
Ответов: 2270
Рейтинг: 677
#2: 2012-01-02 19:13:28 ЛС | профиль | цитата
Установил элемент. Сделал простую схему code_26425.txt (пример идущий с элементом не дает возможности протестировать элемент). Не работает. Посмотрел код элемента (Ctrl + F). Сижу и думаю как вообще это может работать. Может не то выложил?
карма: 11

0
файлы: 1code_26425.txt [878B] [395]
Ответов: 1731
Рейтинг: 68
#3: 2012-01-02 19:43:07 ЛС | профиль | цитата
Только что проверил на относительно чистой WinXP SP2 с чистой средой (4.04 184).
Все работает.
------------ Дoбавленo в 19.43:
Попробуйте заменить на это
#pas
unit hiGetFileVer;

interface

uses
Windows,
hiEditMultiEx,
hiVBJScript,
hiMultiElementEx,hiMultiBase,kol,Share;

type
THIGetFileVer = class(ThiMultiElementEx)
private
EditMultiEx:THIEditMultiEx;
VBJScript:THIVBJScript;
procedure SetonGetFileVer(event:THI_Event);
procedure SetPath(data:THI_Event);
public
Child:THIEditMultiEx;

constructor Create;
destructor Destroy; override;
procedure _work_doGetFileVer(var Data:TData; index:word);
property _event_onGetFileVer:THI_Event write SetonGetFileVer;
property _data_Path:THI_Event write SetPath;
end;

implementation


constructor THIGetFileVer.Create;
begin
inherited Create;
//Init for EditMultiEx;
EditMultiEx := THIEditMultiEx.Create;
with EditMultiEx do begin
SetLength(Works,1);
SetLength(Vars, 0);
end;
//Init for VBJScript;
VBJScript := THIVBJScript.Create;
with VBJScript do begin
_prop_WorkPoints := PChar('doGetFV'#0);
_prop_EventPoints := PChar('onGetFV'#0);
_prop_VarPoints := PChar(#0);
_prop_DataPoints := PChar('Path'#0);
_prop_Language := 0;
_prop_Script := PChar('Sub doWork(Data, Index)'#13#10' Select Case Index'#13#10' Case "doGetFV"'#13#10' Set FSO = CreateObject("Scripting.FileSystemObject")'#13#10' sys.onGetFV FSO.GetFileVersion("" & sys.Path & "")'#13#10' End Select'#13#10'End Sub'#0);
_prop_UseName := True;
end;
//%multi%
//Make all connection in scheme
EditMultiEx.Works[0] := _DoEvent(VBJScript._work_WorkPoints,0);
VBJScript._event_EventPoints[0] := _DoEvent(EditMultiEx.OnEvent,0);
VBJScript._data_DataPoints[0] := _DoEvent(EditMultiEx._Data,0);

Child := EditMultiEx;
Child.MainClass := TClassMultiBase(Self); // work but not correct... :(
Child.Parent := Self;
SetLength(Events, 1);
SetLength(Datas, 1);
end;

destructor THIGetFileVer.Destroy;
begin
VBJScript.Destroy;
EditMultiEx.Destroy;
inherited;
end;

procedure THIGetFileVer._work_doGetFileVer(var Data:TData; index:word);
begin
_hi_onEvent(Child.Works[0], Data);
end;

procedure THIGetFileVer.SetonGetFileVer;
begin
Events[0] := event;
end;

procedure THIGetFileVer.SetPath;
begin
Datas[0] := data;
end;



end.

содержимое hiGetFileVer
карма: 1

0
Ответов: 1536
Рейтинг: 176
#4: 2012-01-02 19:49:36 ЛС | профиль | цитата
sla8a, применил твою схему, но данный компонент работает. (os32win7sp1)
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 1731
Рейтинг: 68
#5: 2012-01-02 19:54:36 ЛС | профиль | цитата
sla8a, попробуйте создать файл test.vbs на рабочем столе.
test.vbs

#bas
Set FSO = CreateObject("Scripting.FileSystemObject")
MsgBox FSO.GetFileVersion("Тут путь к файлу exe/dll")
------------ Дoбавленo в 19.54:
Должен вылезти Message с версией этого файла.
карма: 1

0
Ответов: 2270
Рейтинг: 677
#6: 2012-01-02 20:02:12 ЛС | профиль | цитата
Проблема была у меня. Работает.
карма: 11

0
Ответов: 16884
Рейтинг: 1239
#7: 2012-01-02 20:29:52 ЛС | профиль | цитата
sla8a, а так ?
code_26426.txt
nesco, может добавишь в FileAttributes
Или выложить отдельным компонентом ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_26426.txt [2.2KB] [408]
Ответов: 1731
Рейтинг: 68
#8: 2012-01-02 20:42:35 ЛС | профиль | цитата
Tad, я так не играю
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#9: 2012-01-02 21:56:10 ЛС | профиль | цитата
Cosinus писал(а):
я так не играю
играй. Кто не даёт ?
------------ Дoбавленo в 21.56:
Cosinus, иконку у тебя украсть можно ? Свою лень рисовать.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1731
Рейтинг: 68
#10: 2012-01-02 21:57:45 ЛС | профиль | цитата
Tad, да, конечно.
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#11: 2012-01-02 21:58:51 ЛС | профиль | цитата
Спасибо. Тогда выкладываю в "Компоненты".
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
11
Сообщение
...
Прикрепленные файлы
(файлы не залиты)