![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Информация о файле [D7, XP]
Chort © (2006-07-27 23:43:00)Здравствуйте! Помогите вытянуть информацию с .exe файлов средствами OpenDialog1. Т.е необходимо чтобы при нажатии кнопки(пусть будет Button1) появлялось окно выбора проги (.exe)
procedure TForm1.Button1Click(Sender: TObject);И по выборе необходимого файла должна считыватся информация и показываться на экране : Размер, Версия продукта(и файла),Внутреннее имя, Исходное имя файла, Комментарий, Название продукта, Производитель,
begin
OpenDialog1.Execute;
end;
Язык, и все что еще возможно извлечь. И как потом можно будет управлять этими сведениями? Заранее спасибо!
Chort (2006-07-29 20:30:00) [21]to KilkennyCat and PSPF2003
Warning исправил, все в порядке. А насчет пути к файлу я имею в виду что когда я указываю OpenDialog1 ом файл, с которого хочу считать инфу, то можноли еще и както записать путь этого файла в мою программу?
PSPF2003 (2006-07-29 16:10:00) [22]
> KilkennyCat ©
> намудрил использование переменной даже если опендиалог не
> отработает.
Хм.. если ты про [48]
Ессли опендиалог не отработает произойдет выход. Там же написанно.
KilkennyCat (2006-07-29 15:09:00) [23]> [53] PSPF2003 © (29.07.06 13:20)
намудрил использование переменной даже если опендиалог не отработает.
PSPF2003 (2006-07-29 13:22:00) [24]
> Средствами OpenDialog1 можно также увидеть путь к файлу
> в DBEdit ?
Еще раз только по понятнее.
PSPF2003 (2006-07-29 13:20:00) [25]А по поводу Warning могу только сказать, IMXO ты судя по [32] хм… что-то намудрил.
Chort (2006-07-29 13:13:00) [26]Ошибку исправил!Средствами OpenDialog1 можно также увидеть путь к файлу в DBEdit ?
PSPF2003 (2006-07-29 13:10:00) [27]Там же написанно MSDN (Microsoft Developers Network)
Chort (2006-07-29 13:03:00) [28]Кстати, что означает [17] ?
Chort (2006-07-29 13:01:00) [29]to PSPF2003
У меня тоже, но показывает warning!
PSPF2003 (2006-07-29 12:27:00) [30]У меня все работает.
procedure TForm1.Button2Click(Sender: TObject);
var
a : TVerInfoRes;
begin
if not OpenDialog1.Execute then Exit;
a := TVerInfoRes.Create(OpenDialog1.FileName);
try
EDIT1.Text := A.GetPreDefKeyString(viCompanyName);
EDIT2.Text := A.GetPreDefKeyString(viFileDescription);
EDIT3.Text := A.GetPreDefKeyString(viFileVersion);
EDIT4.Text := A.GetPreDefKeyString(viInternalName);
EDIT5.Text := A.GetPreDefKeyString(viLegalCopyright);
EDIT6.Text := A.GetPreDefKeyString(viLegalTrademarks);
EDIT7.Text := A.GetPreDefKeyString(viOriginalFilename);
EDIT8.Text := A.GetPreDefKeyString(viProductName);
EDIT9.Text := A.GetPreDefKeyString(viProductVersion);
EDIT10.Text := A.GetPreDefKeyString(viComments);
finally
a.Free;
end;
end;
Chort (2006-07-29 12:17:00) [31]В DBGrid1 информация будет вставлятся после того, как можно будет просмотреть и отредактировать(если нужно) данные в DBEdit-ах. Ну а после программа действительно показывает инфу в виде сетки DBGrid1. Не пойму как убрать Warning ?
PSPF2003 (2006-07-29 12:00:00) [32]
> DBEDIT1.Text
А почему не DBGRID ?
Chort (2006-07-29 11:57:00) [33]Коректно ли будет подключить Opendialog1 и написать
procedure TForm1.Button1Click(Sender: TObject);
var
A: TVerInfoRes;
begin
if OpenDialog1.Execute then begin
A := TVerInfoRes.Create(OpenDialog1.FileName);
end;
try
DBEDIT1.Text := A.GetPreDefKeyString(viCompanyName);
DBEDIT2.Text := A.GetPreDefKeyString(viFileDescription);
DBEDIT3.Text := A.GetPreDefKeyString(viFileVersion);
DBEDIT4.Text := A.GetPreDefKeyString(viInternalName);
DBEDIT5.Text := A.GetPreDefKeyString(viLegalCopyright);
DBEDIT6.Text := A.GetPreDefKeyString(viLegalTrademarks);
DBEDIT7.Text := A.GetPreDefKeyString(viOriginalFilename);
DBEDIT8.Text := A.GetPreDefKeyString(viProductName);
DBEDIT9.Text := A.GetPreDefKeyString(viProductVersion);
DBEDIT10.Text := A.GetPreDefKeyString(viComments);
finally
A.Free;
end;
Компилится и работает нормально, но показывает один Warning : ''Variable 'A' might not have been initialized'', и показывает строку
DBEDIT1.Text := A.GetPreDefKeyString(viCompanyName);.
Я понимаю, что Warning это не Error , и сним можно жить , но можно ли этого избежать?
Мефисто (2006-07-28 22:03:00) [34]
> Chort © (28.07.06 21:56) [43]
тебе срочно нужен букварь по дельфи.
тебе выше выложили полноценный готовый юнит.
У себя в проекте создай новый юнит. Удали из него весь текст, а в него вставь код от Шпиона. Только потом в: unit <имя твоего юнита>;
Далее в основном модуле проекта в uses пропиши этот юнит и работай с ним без проблем.
Chort (2006-07-28 21:56:00) [35]короче говоря нужно набирать руками!
PSPF2003 (2006-07-28 21:23:00) [36]
> Мефисто
Извени, я не посмотрел кто написал ответ :)
Мефисто (2006-07-28 21:19:00) [37]
> PSPF2003 © (28.07.06 21:14) [40]
Про не чисто, это мой ответ на Chort © (28.07.06 21:03) [38]
А про копирование кода я тебя отлично понял :)
PSPF2003 (2006-07-28 21:14:00) [38]
> Что-то тут нечисто.
В смысле тут не чисто? Тут как раз все чисто. Я тебе просто говорил, что нельзя тупо копировать код. Для того чтобы вывести систему из строя (Windows) достаточно изменить настройки в реестре , а сделать это можно всего несколькими строчками кода.
Мефисто (2006-07-28 21:09:00) [39]Я конечно много чего слышал. Но чтобы такое... Что-то тут нечисто.
Chort (2006-07-28 21:03:00) [40]чтото творится непонятное: стоит мне положить на форму любой из компонентов , как он прописывается в самое начало кода(к примеру кладу OpenDialog1):
OpenDialog1: TOpenDialog;unit VerInfo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, WinTypes, StdCtrls, Buttons;
type
EVerInfoError = class(Exception);
ENoVerInfoError = class(Exception);
....
и пишет ошибку : 'error in module VerInfo: Module header is missing or incorrect'
отсутствует заголовок модуля!