Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2008, 10:44   #1
eks-s
Пользователь
 
Регистрация: 15.01.2008
Сообщений: 64
По умолчанию Проблема с записью в реест

Подскажите в чём проблема? Запись-Считывание реестра. Если использовать вариант в строчке 10, то всё работает, но мне нужно сохранять с текстового поля.

Код:
uses ...,Registry;

//запись в рееестр
procedure TMainForm.Button1Click(Sender: TObject);
var
  Myreg : TRegistry;
  S : String;
begin
//  S := 'Text';
  S := Edit1.Text;

  Myreg := TRegistry.Create;
  Myreg.RootKey := HKEY_CURRENT_USER;
  Myreg.OpenKey('Software',True);
  Myreg.OpenKey('Updater',True);
  Myreg.WriteBinaryData('Key',S,SizeOf(S));
  Myreg.Free;
end;

//считывание с реестра
procedure TMainForm.Button2Click(Sender: TObject);
var
  reg : TRegistry;
  S : string;
begin
  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_USER;
  reg.OpenKey('Software',false);
  reg.OpenKey('Updater',false);
  reg.ReadBinaryData('Key',S,SizeOf(S));
  reg.Free;
  showmessage(S);
end;
eks-s вне форума Ответить с цитированием
Старый 02.02.2008, 11:15   #2
vitalik007
Дельфист
Форумчанин
 
Аватар для vitalik007
 
Регистрация: 14.08.2007
Сообщений: 317
По умолчанию

А почему бы не записать строковый параметр?
в 17 muReq.writeString('Key',s);
ICQ-465033557
WINDOWS CE THE BEST
vitalik007 вне форума Ответить с цитированием
Старый 02.02.2008, 11:23   #3
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Если угодно так Myreg.WriteBinaryData('Key',S,SizeO f(S)); то пишите правильно

Myreg.WriteBinaryData('Key',Pointer(S)^,Length(S));
BOBAH13 вне форума Ответить с цитированием
Старый 02.02.2008, 11:52   #4
eks-s
Пользователь
 
Регистрация: 15.01.2008
Сообщений: 64
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Если угодно так Myreg.WriteBinaryData('Key',S,SizeO f(S)); то пишите правильно

Myreg.WriteBinaryData('Key',Pointer(S)^,Length(S));
Спасибо! А если нужно прописать и считать запись (record) состоящую из двух переменных, берущих значения с полей ввода? Как тогда с ними работать? Вообще у меня вот такая задача. Но чё то я уже голову ломаю несколько дней

Код:
type
  TMyKeyRecord = record
    user  : PWideChar;
    passw : PWideChar;
    Activation : Boolean;
  end;

//запись в реестр
procedure TForm1.Button1Click(Sender: TObject);
var
  Myreg : TRegistry;
  MyRegKey : TMyRegKey;
  S : String;
begin
  S := Edit1.Text;
  GetMem(MyRegKey.user,Length(S)+1);
  StringToWideChar(S,MyRegKey.user,Length(S)+1);
  S := Edit2.Text;
  GetMem(MyRegKey.passw,Length(S)+1);
  StringToWideChar(S,MyRegKey.passw,Length(S)+1);
  MyRegKey.Activation := True;

  Myreg := TRegistry.Create;
  Myreg.RootKey := HKEY_CURRENT_USER;
  Myreg.OpenKey('Software',True);
  Myreg.OpenKey('NODUpdater',True);
  Myreg.WriteBinaryData('Key',MyRegKey,SizeOf(MyRegKey));
  Myreg.Free;
end;

//считывание с реестра
procedure TForm1.Button2Click(Sender: TObject);
var
  reg : TRegistry;
  RegKey : TMyRegKey;
  S : string;
begin
  RegKey.user := '';
  RegKey.passw := '';
  RegKey.Activation := False;

  reg := TRegistry.Create;
  reg.RootKey := HKEY_CURRENT_USER;
  reg.OpenKey('Software',false);
  reg.OpenKey('NODUpdater',false);
  reg.ReadBinaryData('Key',RegKey,SizeOf(RegKey));
  reg.Free;
  if RegKey.Activation then S := 'True'
    else s := 'False';
  memolog.Lines.Add(WideCharToString(RegKey.user));
  memolog.Lines.Add(WideCharToString(RegKey.passw));
  memolog.Lines.Add(S);
end;
Вот тут я начинаю недопонимать....

Последний раз редактировалось eks-s; 02.02.2008 в 12:03.
eks-s вне форума Ответить с цитированием
Старый 02.02.2008, 13:42   #5
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Если в записи record существуют елементы типа указателя (String, PCHAR, PWCHAR, PWideChar, Pointer.. и т.д. ) то просто так запись нельзя писать, кстати вот недавно я как раз объяснял кому то на этом форуме с аналогичной проблемой ! Так что поищите по форуме должны найти эту тему.
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача с записью |v||v|<<IpShot Паскаль, Turbo Pascal, PascalABC.NET 11 23.08.2008 17:02
Проблема с записью большого файла Rembo Свободное общение 17 17.06.2008 12:47
В Edit - Inicial и Year в соответствии с выбранной записью в комбобоксе Колян12 БД в Delphi 2 26.05.2008 03:49
Истинный объём памяти занимаемый записью, record Мессир Общие вопросы Delphi 35 28.01.2008 08:52
Проблема с записью в файл...( Regloger Помощь студентам 10 15.11.2007 17:49