semiono
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Нужен хелп! И просьба не динамить, так как очень нужно. Вот код который граббит реестр (REG_NONE) и пишет в файл результат. Код: const KEY_QUERY_VALUE = 1; function RegOpenKeyEx( hKey: Integer; const lpSubKey: String; ulOptions: Integer; samDesired: Integer; var hkeyResult: Integer ): Integer; external 'RegOpenKeyExA@AdvAPI32.DLL stdcall'; function RegCloseKey( hKey: Integer ): Integer; external 'RegCloseKey@AdvAPI32.DLL stdcall'; type Data = array [0..259] of Byte; function RegQueryValueEx( hKey: Integer; const lpValueName: String; lpReserved: Integer; var lpType: Integer; var lpData: Data; var lpcbData: Integer ): Integer; external 'RegQueryValueExA@AdvAPI32.DLL stdcall'; function InitializeSetup(): Boolean; var hKey, ValueType, ValueDataLen, i, j: Integer; ValueData: Data; Value: String; begin RegOpenKeyEx(HKLM, 'SOFTWARE\Classes\Trilogy', 0, KEY_QUERY_VALUE, hKey); for i := 1 to 3 do begin Value := Format('Value%u', [i]); ValueDataLen := SizeOf(ValueData); RegQueryValueEx(hKey, Value, 0, ValueType, ValueData, ValueDataLen); Value := Format('HKLM,"SOFTWARE\Classes\Trilogy","%s",0x20001', [Value]); for j := 0 to ValueDataLen-1 do Value := Value+Format(',%.2x', [ValueData[j]]); SaveStringToFile('C:\test.txt', Value+#13#10, i>1); end; RegCloseKey(hKey); Result := False; end; | Вот мой незатейливый код Код: [_Code] procedure DeinitializeSetup(); var S: TArrayOfString; F: String; begin F := ExpandConstant('{reg:HKLM32\Software\VST,VSTPluginsPath|{syswow64}\Plugins}\Trilogy\Trilogy.inf'); SetArrayLength(S, 9); // ------------------------------------------------------------------------------------------------------------------------------------- S[00] := '[Version]' S[01] := 'Signature=$Windows NT$' S[02] := '' S[03] := '[DefaultInstall]' S[04] := 'AddReg=Add.Reg' S[05] := '' S[06] := '[Add.Reg]' S[07] := 'HKLM,"Software\Microsoft\Windows\CurrentVersion\App Paths\Trilogy.exe",,0x4000,"' + ExpandConstant('{reg:HKLM32\Software\VST,Proton.exe|{syswow64}\Proton}') + '\Trilogy\Trilogy.exe"' S[08] := 'HKLM,"Software\Microsoft\Windows\CurrentVersion\App Paths\Trilogy.exe","Path",0x4000,"' + ExpandConstant('{reg:HKLM32\Software\VST,Proton.exe|{syswow64}\Proton}') + '\Trilogy"' // ------------------------------------------------------------------------------------------------------------------------------------- SaveStringsToFile(F, S, False); end; | Мне нужно к моему коду привязать то, что было выше для того, чтобы дописать экспортируемые значения из реестра в конец этого файла: ExpandConstant('{reg:HKLM32\Software\VST,VSTPluginsPath|{syswow64}\Plugins}\Trilogy\Trilogy.inf') Причём это должно неизменно выполниться под процедурой DeinitializeSetup(); Экспорт происходит с тремя значениями Value1, Value2 и Value3, если нужно то можно явно это указать в коде экспорта вместо индексов типа i>1. Одним словом проблема в том, что SaveStringToFile() переписывает весь файл, а мне надо прибавить к моему файлу эти строки в таком виде: SetArrayLength(S, 12); ... S[09] :=... S[10] :=... S[11] :=... Так как я в этом нибум-бум, помогите преобразовать? Только желательно целиком код напишите. Напомню, то что было http://j.imagehost.org/0295/Snap1_1.png |