Einzelnen Beitrag anzeigen

simjoh

Registriert seit: 13. Nov 2006
Ort: Asslar
99 Beiträge
 
Delphi 7 Enterprise
 
#28

Re: Hilfe beim Übersetzten von C in Delphi

  Alt 24. Mär 2007, 07:40
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.
  Mit Zitat antworten Zitat