Нужен хелп! И просьба не динамить, так как очень нужно.
Вот код который граббит реестр (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