Newsgroup: it.comp.lang.c++
Titolo: Neofita c++ chiede aiuto...

Salve a tutti!
Premetto che utilizzo c++ builder..
Sono un neofita del c++ che ha bisogno di aiuto...
Questa routine deve fare un confronto di due file byte per byte e
memorizzare la posizione
degli eventuali byte diversi e il valore stesso del byte diverso..
Il problema è che apparentemente le varie FileSeek, FileRead non funzionano!
Mi potete spiegare perchè questa routine non funziona?????
             _ risposta tipo 1: Si vede che è un neofita..
             _ risposta tipo 2: Uhmmm.. strano che il compilatore non gli ha
sputato in faccia...
A parte gli scherzi.. dove ho sbagliato?
 __fastcall CheckFiles(int OrigHwnd, int CrackHwnd)
    {
      char *OrigBuffer;
      char *CrackBuffer;
      int FilePos;
      int ByteLetti;
     /* MessageDlg("Prova!!!! Handle Originale: "+IntToStr(OrigHwnd)+"
Handle Crakkato:"+IntToStr CrackHwnd),mtError,TMsgDlgButtons() <<mbOK,0);*/
      FilePos=0;
      ByteLetti=1;
      FilePos=FileSeek(OrigHwnd,0,0); /* Si posiziona ovunque tranne che
all'inizio */
      FilePos=FileSeek(CrackHwnd,0,0); /* Si posiziona ovunque tranne che
all'inizio */
      while (ByteLetti!=-1) /* in teoria quando Byteletti ritorna -1 dovrei
essere in EOF */
       {
         FilePos=FileSeek(OrigHwnd,0,1); /*La posizione restituita non è
affatto l'inizio del file*/
         ByteLetti=FileRead(OrigHwnd,OrigBuffer,1); /*ByteLetti
restituisce -1, quindi non legge*/
         FileRead(CrackHwnd,CrackBuffer,1); /*Legge caratteri che non ci
sono nel file!!*/
         if (OrigBuffer!=CrackBuffer)
          {
            /* Codice che memorizza la posizione ed il byte originale e
modificato */
          }
       }
     return 0;
    }

Eccomi di nuovo...
il primo problema l'ho già risolto...
ma qui c'è subito il secondo...
non ci sono Ka**i di scrivere sul file il record MyHeader...
AIUTOOOOO!!..
//--------------------------------------------------------------------------
-
__fastcall TForm1::FillString(AnsiString* Stringa,int lunghezza)
{
  int i;
  AnsiString STR=AnsiString::StringOfChar('*',255-StrLen((char*)&Stringa));
  AnsiString *CAR=&STR;
  *Stringa =*Stringa+*CAR;
  return 0;
}
//--------------------------------------------------------------------------
-
__fastcall TForm1::CheckFiles(int OrigHwnd, int CrackHwnd)
    {
      unsigned char *OrigBuffer;
      unsigned char *CrackBuffer;
      int FileSize;
      int FilePos;
      int ByteLetti;
      int i;
      int PatchFileHandle;
      /*Header del File*/
      struct MyHeader {
         AnsiString HdrTAG;
         AnsiString HdrFilename;
         int  HdrFileSize;
      } FileHdr, *Hdr=&FileHdr;
      /*Dati del file*/
      struct MyCrack {
         int Offset;
         unsigned char OrigByte;
         unsigned char ModByte;
      }FileDta;
      PatchFileHandle=FileCreate("PatchDat.Dat");
      FileHdr.HdrTAG="EXTREMEPATCHER";
      FileHdr.HdrFilename=GetFileName(OriginalFile->Text.c_str());
      FillString((AnsiString*)&FileHdr.HdrFilename,255);
      FileHdr.HdrFileSize=FileSeek(OrigHwnd,0,2);
      FileSeek(PatchFileHandle,0,0);
      FileWrite(PatchFileHandle,Hdr,14+255+sizeof(FileHdr.HdrFileSize));
      FileSize=FileSeek(OrigHwnd,0,2);
      FilePos=FileSeek(OrigHwnd,0,0);
      FilePos=FileSeek(CrackHwnd,0,0);
      OrigBuffer =new char[FileSize];
      CrackBuffer=new char[FileSize];
      /*MessageDlg("Prova!!!! Handle Originale: "+IntToStr(OrigHwnd)+"
Handle Crakkato:"+IntToStr(CrackHwnd),mtError,TMsgDlgButtons() <<mbOK,0);*/
      FilePos=0;
      ByteLetti=1;
      ByteLetti=FileRead(OrigHwnd,OrigBuffer,FileSize);
      ByteLetti=FileRead(CrackHwnd,CrackBuffer,FileSize);
      for (i=0;i<FileSize;i++)
      {
        if (OrigBuffer[i] != CrackBuffer[i])
          {
           MessageDlg("Trovato diverso a: "+IntToStr(i)+" byte originale=>
"+OrigBuffer[i]+" ByteCrakkato=>
"+CrackBuffer[i],mtInformation,TMsgDlgButtons()<<mbOK,0);
          }
      }
     free(OrigBuffer);
     free(CrackBuffer);
     return 0;
    }
//--------------------------------------------------------------------------
-
  char* __fastcall TForm1::GetFileName(char* pszFilePath)
{
 char* pszFileName = StrRScan(pszFilePath, '\\');
 if (!pszFileName)
  pszFileName = pszFilePath;
 else
  pszFileName++;
 return pszFileName;
}
//--------------------------------------------------------------------------
-