Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Реестр [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 осознал?


Наверх

Титульная страница Поиск, карта сайта Написать письмо