1. Aufpassen. Bei Write gibt man das erste Element des Puffers an das man schreiben will, nicht den Puffer selbst. Die Deklaration von Write ist mit "const Buffer" fuer den Parameter was heisst bei der Parameteruebergabe addiert Delphi eine Indirektion, sprich uebergibt die Adresse des Elementes.
Delphi-Quellcode:
if (GL_Add6MaxTag=true) then
begin
RMIndex:=GetIndexToNextSubString(Buffer,' (Real Money)',BufferLen);
if (RMIndex>=0) then
begin
OutStream.write(Buffer[0], RMIndex);
OutStream.write(' (6 max)', strlen(' (6 max)')); // Add the 6-max tag.
OutStream.write(Buffer[RMIndex], BufferLen - RMIndex);
end
else
begin
OutStream.write(Buffer[0], BufferLen); // If can't find, just write as normal.
end;
end
else
begin // Write the rest of the buffer.
OutStream.Write(Buffer[0], BufferLen);
end;
2.
Delphi-Quellcode:
if MBI.RegionSize > BufferLen then
begin
// Realloziierung des Puffers
if Buffer <> nil then
FreeMem(Buffer);
GetMem(Buffer, MBI.RegionSize);
BufferLen := MBI.RegionSize;
// sicherheitshalber den Puffer auf C Leerstring initialisieren
Buffer[0] := #0;
end;
3. Bei "static unsigned int MinRegionSize=~0;" ist ~ das bitweise not. Die Zahl wird also auf alle Bits 1" gesetzt.
Delphi-Quellcode:
var
MinRegionSize: Cardinal = not 0;
// alternativ
MinRegionSize: Cardinal = $FFFFFFFF;
Fuer den Rest habe ich gerade keine Zeit bei den Einzelheiten. Spaeter.
4. Letzlich nur ein Stringvergleich.
5. Hier geht es um die ParamStr, also die Parameter beim Programmaufruf.
6. var GL_Extention = 'hhf': string; GL_extention := ParamStr(I+1);
7. Das ist ein Thread. Da muss ein Delphi-Threadobjekt her.
8. Das ist das Hauptprogramm. Entspricht dem was du in einem .dpr findest. Es wird etwas angezeigt und dann nur der Thread gestartet der die Arbeit macht. Es ist uebrigens ein DOS-Box-Programm (aka Konsolenprogramm) was wir hier haben.