Lieber Robert,
vielen Dank bis hierhin. Alle deine Tipps sind Volltreffer. Ich erlaube mir mal noch ein paar Fragen zu stellen.
1. Bei
Code:
if (GL_Add6MaxTag=true) then
begin
RMIndex:=GetIndexToNextSubString(Buffer,' (Real Money)',BufferLen);
if (RMIndex>=0) then
begin
OutStream.write(Buffer,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,BufferLen); // If can't find, just write as normal.
end;
end
else
begin // Write the rest of the buffer.
OutStream.Write(Buffer, BufferLen);
end;
motzt der Compiler bei
Code:
OutStream.write(Buffer+RMIndex,BufferLen-RMIndex);
nach Buffer+RMIndex. Die Meldung: Variable erforderlich.
2. Wie würdest du das übersetzten:
Code:
if (MBI.RegionSize>BufferLen)
{
if (Buffer!=NULL)
delete [] Buffer;
Buffer = new char[MBI.RegionSize];
BufferLen=MBI.RegionSize;
}
3. Und das
Code:
static unsigned int MinRegionSize=~0;
Was bedeutet das =~ ?
4. Damit kann ich garnix anfangen:
Code:
for (register unsigned int I=MaxLen;I!=0;I-=GL_StringAlignment)
{
// Look for "#Game No : " - Don't use stncmp - slow as fuck...
// v0.04: Use the fact always alligned to just check via a 32bit comp.
// NOTE: Will even cast to non-aligned int, but will be slower.
if ((*((unsigned int*)(&Buffer[I]))) == ((((unsigned int)'m')<<24)
|(((unsigned int)'a')<<16)
|(((unsigned int)'G')<<8)
|(((unsigned int)'#'))) // Remember: big-endian...
&& Buffer[I+4]=='e'
&& Buffer[I+5]==' '
&& Buffer[I+6]=='N'
&& Buffer[I+7]=='o'
&& Buffer[I+8]==' '
&& Buffer[I+9]==':'
&& Buffer[I+10]==' '
&& Buffer[I+11]>='0'
&& Buffer[I+11]<='9')
{
Wie kann man denn das übersetzten? Muss ich das mit ner while-Schleife erschlagen?
5. Was ist denn char** ?:
Code:
void ParseArgs(int argc,char** argv)
6. Und das:
Code:
char GL_Extention[4]="hhf";
strcpy_s(GL_Extention,argv[I+1]);
in Delphi: strcopy frisst GL_Extention nicht.
7. Hier wird wohl eine Procedure deklariert:
Code:
DWORD
WINAPI MainThread(void *Param)
Wie übersetz ich das denn?
Die ganze Proc:
Code:
DWORD
WINAPI MainThread(void *Param)
{ // Used so we can start with different priorities (saves messing with
the batch file).
static PartyHandGrabber PHG;
// Start the main loop (never returns...).
PHG.StartLoop();
// ### NEVER RETURNS - BUT MIGHT BE USEFUL IF WE ONE DAY ADD A
GUI ###
//ExitThread(0);
return 0;
}
Merkwürdig, dass Param in der Procedur nicht mehr auftaucht.
8. Und dann noch:
Code:
int main(int argc, char** argv)
{
DWORD ThreadID; // Unused, but must have for
win9x...
HANDLE ThreadHandle;
// Parse the arguments.
ParseArgs(argc,argv);
// Display something just to let the user know that we have started.
if (GL_Verbose==true)
DisplayStartupInfo();
// Start the thread.
ThreadHandle=CreateThread(NULL,0,MainThread,0,0,&ThreadID);
// Set the desired priority of the thread.
if (GL_Priority==-2)
SetThreadPriority(ThreadHandle,THREAD_PRIORITY_LOWEST);
else if (GL_Priority==-1)
SetThreadPriority(ThreadHandle,THREAD_PRIORITY_BELOW_NORMAL);
else if (GL_Priority==0)
SetThreadPriority(ThreadHandle,THREAD_PRIORITY_NORMAL);
else if (GL_Priority==1)
SetThreadPriority(ThreadHandle,THREAD_PRIORITY_ABOVE_NORMAL);
else if (GL_Priority==2)
SetThreadPriority(ThreadHandle,THREAD_PRIORITY_HIGHEST);
// Lets just let the thread do it's work (just idle here forever).
WaitForSingleObject(ThreadHandle,INFINITE);
return 0;
}
Wie wird denn hier
Code:
ThreadHandle=CreateThread(NULL,0,MainThread,0,0,&ThreadID);
In Delphi übertrage?
Viiiiiiiielen Dank für deine Hilfe, wenn du denn überhaupt Lust dazu hast.