Forum: Win32/Win64 API (native code)
Delphi
by sx2008,
27. Mai 2009
Nein, man kann doch AnsiStrings wunderbar mit dem pluszeichen miteinander verketten.
Dabei werden die beteiligten Stringstücke in einen neuen String kopiert.
Mit der Technik von Zacherl könnte man sich die kopierei sparen, aber so ist es viel eleganter.
alles ungetestet:
function BuildStringStructure(Key, Value : Widestring):Ansistring;
var
p : PInteger;
begin
key := key + #0; //...
Forum: Win32/Win64 API (native code)
Delphi
by sx2008,
26. Mai 2009
Genau das ist das Problem, was die Sache so knifflig macht.
Eine Möglichkeit wäre, mit den innersten String Structure zu beginnen und diese dann zu einer StringTable Structure zusammenzubauen, die dann wiederum zur StringFileInfo Structure aufgebaut wird.
Hier völlig ungetestet als Anregung:
function BuildStringStructure(Key, Value : Widestring):Ansistring;
var
p : PInteger;
begin
...
Forum: Win32/Win64 API (native code)
Delphi
by sx2008,
25. Mai 2009
Die Strukturen werden einfach hintereinander "geklebt".
Man kann keine normalen Pascal Records verwenden, sondern man braucht einen Speicherblock (mit GetMem) und baut dann dort die Strukturen auf.
Die Herausforderung ist dann, dass wLength von VS_VERSIONINFO auch alle weiteren StringFileInfo Blöcke berücksichtigen muss.