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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 01.11.2006, 11:07   #1
tetraciclinum+
 
Регистрация: 01.11.2006
Сообщений: 7
Восклицание друзья!!! как записать в реестр мультистроковой параметр???

Доброго вам ума!
Суть проблемы в том, что необходимо добавить в реестр програмным способом занчение реестра в разделе HKEY_LOCAL_MACHINE\SYSTEM\ControlSe t001\Services\lanmanserver\Shares значение мультистрокового параметра для открытия шары...
Как записать просто строковой параметр я знаю и использую процедуру типа:
procedure TForm1.FormCreate(Sender: TObject);
var
// Переменная реестра
h: TRegistry;
begin
h := TRegistry.Create;
with h do
begin
RootKey := HKEY_LOCAL_MACHINE;
OpenKey('\Software\Microsoft\Window s\CurrentVersion\Run', true);
WriteString('DelphiWorldApp', 'C:\Application.exe');
CloseKey;
Free;
end;
end;

//WriteString - записывает строковой параметр, а вот как записать мультистроковой параметр?
tetraciclinum+ вне форума
Старый 01.11.2006, 15:21   #2
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Цитата:
а вот как записать мультистроковой параметр?
что ты имеешь ввиду? что за мултистроковый тип?
возможно #13 - перенос на новую строку тебе поможет.
Alar вне форума
Старый 02.11.2006, 07:18   #3
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

нет. просто регедит если запустить и в любом ключе кликнуть создать, там есть строковый, двоичный, Dword, мультистроковый, расширяемый строковый. так что есть специальный тип параметра, думаю #13 не покатит.

Последний раз редактировалось zetrix; 17.01.2007 в 09:35.
zetrix вне форума
Старый 02.11.2006, 19:05   #4
Гриха
Вернулся
Форумчанин
 
Аватар для Гриха
 
Регистрация: 29.10.2006
Сообщений: 174
По умолчанию

Нашел в ДельфиВорлд(если не то извиняйте)

unit Reg;
{$R-,T-,H+,X+}

interface

uses Registry, Classes, Windows, Consts, SysUtils;

type

TReg = class(TRegistry)
public
procedure ReadStringList(const name: string; list: TStringList);
procedure WriteStringList(const name: string; list: TStringList);
end;

implementation

//*** TReg *********************************** **********************************
//------------------------------------------------------------------------------
// Запись TStringList ввиде значения типа REG_MULTI_SZ в реестр
//------------------------------------------------------------------------------

procedure TReg.WriteStringList(const name: string; list: TStringList);
var

Buffer: Pointer;
BufSize: DWORD;
i, j, k: Integer;
s: string;
p: PChar;
begin

{подготовим буфер к записи}
BufSize := 0;
for i := 0 to list.Count - 1 do
inc(BufSize, Length(list[i]) + 1);
inc(BufSize);
GetMem(Buffer, BufSize);
k := 0;
p := Buffer;
for i := 0 to list.Count - 1 do
begin
s := list[i];
for j := 0 to Length(s) - 1 do
begin
p[k] := s[j + 1];
inc(k);
end;
p[k] := chr(0);
inc(k);
end;
p[k] := chr(0);

{запись в реестр}
if RegSetValueEx(CurrentKey, PChar(name), 0, REG_MULTI_SZ, Buffer,
BufSize) <> ERROR_SUCCESS then
raise ERegistryException.CreateResFmt(@SR egSetDataFailed, [name]);
end;
//------------------------------------------------------------------------------
// Чтение TStringList ввиде значения типа REG_MULTI_SZ из реестра
//------------------------------------------------------------------------------

procedure TReg.ReadStringList(const name: string; list: TStringList);
var

BufSize,
DataType: DWORD;
Len, i: Integer;
Buffer: PChar;
s: string;
begin

if list = nil then
Exit;
{чтение из реестра}
Len := GetDataSize(Name);
if Len < 1 then
Exit;
Buffer := AllocMem(Len);
if Buffer = nil then
Exit;
try
DataType := REG_NONE;
BufSize := Len;
if RegQueryValueEx(CurrentKey, PChar(name), nil, @DataType, PByte(Buffer),
@BufSize) <> ERROR_SUCCESS then
raise ERegistryException.CreateResFmt(@SR egGetDataFailed, [name]);
if DataType <> REG_MULTI_SZ then
raise ERegistryException.CreateResFmt(@SI nvalidRegType, [name]);
{запись в TStringList}
list.Clear;
s := '';
for i := 0 to BufSize - 2 do
begin // BufSize-2 т.к. последние два нулевых символа
if Buffer[i] = chr(0) then
begin
list.Add(s);
s := '';
end
else
s := s + Buffer[i];
end;
finally
FreeMem(Buffer);
end;
end;

end.
...учись так - будто будешь жить вечно...
...живи так - будто умирать завтра...
Гриха вне форума
Старый 02.11.2006, 19:07   #5
Гриха
Вернулся
Форумчанин
 
Аватар для Гриха
 
Регистрация: 29.10.2006
Сообщений: 174
По умолчанию

и еще...

function RegSetString(RootKey: HKEY; Name: string; Value: string): boolean;
function RegSetMultiString(RootKey: HKEY; Name: string; Value: string): boolean;
function RegSetExpandString(RootKey: HKEY; Name: string; Value: string): boolean;
function RegSetDWORD(RootKey: HKEY; Name: string; Value: Cardinal): boolean;
function RegSetBinary(RootKey: HKEY; Name: string; Value: array of Byte): boolean;
function RegGetString(RootKey: HKEY; Name: string; var Value: string): boolean;
function RegGetMultiString(RootKey: HKEY; Name: string; var Value: string): boolean;
function RegGetExpandString(RootKey: HKEY; Name: string; var Value: string): boolean;
function RegGetDWORD(RootKey: HKEY; Name: string; var Value: Cardinal): boolean;
function RegGetBinary(RootKey: HKEY; Name: string; var Value: string): boolean;
function RegGetValueType(RootKey: HKEY; Name: string; var Value: Cardinal): boolean;
function RegValueExists(RootKey: HKEY; Name: string): boolean;
function RegKeyExists(RootKey: HKEY; Name: string): boolean;
function RegDelValue(RootKey: HKEY; Name: string): boolean;
function RegDelKey(RootKey: HKEY; Name: string): boolean;
function RegConnect(MachineName: string; RootKey: HKEY; var RemoteKey: HKEY): boolean;
function RegDisconnect(RemoteKey: HKEY): boolean;
function RegEnumKeys(RootKey: HKEY; Name: string; var KeyList: string): boolean;
function RegEnumValues(RootKey: HKEY; Name: string; var ValueList: string): boolean;
...учись так - будто будешь жить вечно...
...живи так - будто умирать завтра...
Гриха вне форума
Старый 04.11.2006, 13:49   #6
tetraciclinum+
 
Регистрация: 01.11.2006
Сообщений: 7
По умолчанию

вот молодцы, вот спасибо!!! примного благодарен... сам штудировал дельфиворлд и не нашел... большое спасибо все работает!!! отличный форум!!!
tetraciclinum+ вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
друзья объясните! StoneD Свободное общение 1 30.12.2007 19:38
Друзья Горю Умелец Помощь студентам 4 26.03.2007 04:56