|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
01.11.2006, 11:07 | #1 |
Регистрация: 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 - записывает строковой параметр, а вот как записать мультистроковой параметр? |
01.11.2006, 15:21 | #2 | |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,599
|
Цитата:
возможно #13 - перенос на новую строку тебе поможет. |
|
02.11.2006, 07:18 | #3 |
Delphi/C++/C#
Участник клуба
Регистрация: 29.10.2006
Сообщений: 1,972
|
нет. просто регедит если запустить и в любом ключе кликнуть создать, там есть строковый, двоичный, Dword, мультистроковый, расширяемый строковый. так что есть специальный тип параметра, думаю #13 не покатит.
Последний раз редактировалось zetrix; 17.01.2007 в 09:35. |
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 |
Регистрация: 01.11.2006
Сообщений: 7
|
вот молодцы, вот спасибо!!! примного благодарен... сам штудировал дельфиворлд и не нашел... большое спасибо все работает!!! отличный форум!!!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
друзья объясните! | StoneD | Свободное общение | 1 | 30.12.2007 19:38 |
Друзья Горю | Умелец | Помощь студентам | 4 | 26.03.2007 04:56 |