![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Реестр [D7, XP]
Ultimate © (2008-02-28 17:29:00)Проблема с реестром. Записал ключ через:
var
Form1: TForm1; var i:byte;
implementation
{$R *.dfm}
var
RegFile: TRegIniFile;
const
//Подсекция
SubKey: string = 'Software\Ultimate DVD';
StrKey: string = 'StrKey';
....................
RegFile := TRegIniFile.Create(SubKey);
RegFile.WriteString(StrKey, 'Value', IntToStr(znach+555));
через редактор реестра вижу, что ключ на месте...
но когда прошу вывести значение ключа по команде
Edit2.Text:=RegFile.ReadString(StrKey, 'Value', '');
Ничего не выходит... Пишет про EAccesViolation и адреса всякие...Если вместоRegFile.ReadString(StrKey, 'Value', '')ввести строку, для вывода в edit2, то всё нормально... Может что-то не так? Скажите что... или напишите подробно другой способ как считать строку с HKEY_CURRENT_USER\Software\Ultimate DVD\RegKey\Value='значение'??? Я новичок, так шо изините...
Ultimate (2008-02-29 17:29:00) [1]я понял в чем прикол был... немного я думаю (в смысле мало :)
Palladin (2008-02-29 13:48:00) [2]Edit2.Text у тебя тоже я так понимаю integer ?
брысь книжки читать
Ultimate (2008-02-29 13:38:00) [3]
procedure TForm1.FormActivate(Sender: TObject);
var
SerialNum : dword;
a, b : dword;
Buffer : array [0..255] of char;
begin
if GetVolumeInformation('c:\', Buffer, SizeOf(Buffer),
@SerialNum, a, b, nil, 0) then
Edit1.Text:=IntToStr(SerialNum);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text:=StrToInt(Edit2.Text) + 555;
end;
проблема вEdit2.Text:=StrToInt(Edit2.Text) + 555;
код вроде нормальный, но пишет про несовместимость типов :( какгбы string и integer... но ведь StrToInt(Edit2.Text) должно быть integer.... что не так?
Ultimate (2008-02-29 12:33:00) [4]
> > ЗЫЖ в коде есть лишняя неиспользуемая переменная.
> даже две... ;)
это ты про S: string; и Registry.Free; ???
я проста непойму, зачем они нужны :)
> Но и приведеный код с ошибками. Будет и утечка памяти и
> сообщени об ошибке. Если хочешь получать сообщения об ошибках,
> то хотя бы сделай защищенный блок.
ну у меня ошибок нет... все работает... утечка памяти... в смысле?
***
Да и еще одно... невкурсе как перевести числовое значение из типа string в тип integer??? чета у меня не варит чайник?
sniknik (2008-02-29 11:55:00) [5]> ЗЫЖ в коде есть лишняя неиспользуемая переменная.
даже две... ;)
(вот как не люблю with, но именно для подобного рода кода (короткий, и в нем можно за счет with убрать лишнее) всетаки использую)
Anatoly Podgoretsky (2008-02-29 10:59:00) [6]А зачем ты приводишь чужой код, а сам используешь другой.
В интернете очень много кода, но к чему его приводить здесь?
Но и приведеный код с ошибками. Будет и утечка памяти и сообщени об ошибке. Если хочешь получать сообщения об ошибках, то хотя бы сделай защищенный блок.
ЗЫЖ в коде есть лишняя неиспользуемая переменная.
Ultimate (2008-02-29 10:22:00) [7]
> > Registry.RootKey:=HKEY_LOCAL_MACHINE;
>
> -----
>
> > всё. сделал..сделал считывание ключа через
ну это я общий скрипт вынес... мой выглядит так:
function GetRegistryValue: string;
var
Registry: TRegistry;
S: string;
begin
Registry:=TRegistry.Create;
Registry.RootKey:=HKEY_CURRENT_USER;
{False because we do not want to create it if it doesn’t exist}
Registry.OpenKey('Software\Ultimate DVD\ver2.4',False);
Result :=Registry.ReadString('Value');
Registry.Free;
end;
Так что всё работает... и работает так как я хотел. в общем все вопросы заданные тут, касались тока одной програмки для диска... а именно Autorun.exe... Ну а зачем эти все фичи мне туда, объяснять не буду... :)
Anatoly Podgoretsky (2008-02-29 09:46:00) [8]
> или напишите подробно другой способ как считать строку с
> HKEY_CURRENT_USER\
> Registry.RootKey:=HKEY_LOCAL_MACHINE;
-----
> всё. сделал..сделал считывание ключа через
Есть подозрение (номер 1), что нет
Есть подозрение (номер 2), что это не будет работать на большинстве компьтеров.
Сергей М. (2008-02-29 08:57:00) [9]
> Пишет про EAccesViolation и адреса всякие
Есть основания для подозрения в несуществовании объекта, на который ссылается переменная RegFile.
Ultimate (2008-02-29 08:56:00) [10]всё. сделал..сделал считывание ключа через
uses Registry;
function GetRegistryValue: string;
var
Registry: TRegistry;
S: string;
begin
Registry:=TRegistry.Create;
Registry.RootKey:=HKEY_LOCAL_MACHINE;
{False because we do not want to create it if it doesn’t exist}
Registry.OpenKey('MYKEY',False);
Result :=Registry.ReadString('VALUE1');
Registry.Free;
end;
который дается в примере delphi
Ultimate (2008-02-29 08:51:00) [11]англицкий я знаю чуть. и переводчик есть... да и кажись я что-то нашел... по своей проблеме
macrodens (2008-02-28 21:36:00) [12]to Ultimate © (28.02.08 17:46) [2]
А ты думаешь мы все здесь с рождения английский знаем??
в тырнете есть онлайн переводчики если что, да и просто переводчиков полно.
Palladin (2008-02-28 18:08:00) [13]
> она англицкая..
и что теперь? бросай тогда это грязное дело... иди метлу покупай...
там если что ссылка examples есть, но там тоже по англицки...
Ultimate (2008-02-28 17:46:00) [14]она англицкая... мало че понял, но предположительно, если имеется INI часть, значит дело идет в внешним ini файлом... мне это сделать - последняя моя задача в моей задумке... поэтому., мне се равно как, но надо считать данные оттуда :(
Palladin (2008-02-28 17:35:00) [15]в справку смотрел? примеры видел? для чего TRegIniFile осознал?