![]() |
C in Delphi Übersetzen
Kann mir jemand helfen diesen c Source in Delphi zu Übersetzen
Delphi-Quellcode:
-Klar ist das war ne Consolen Anwendung
int IMEI_code(char* IMEI, char *std);
int main(int argc, char* argv[]) { printf("CL 50 UNLOCK ALL\n"); if (argc<2) // mach ich Anders über MemoInfo.lines.add('Prüfe eingegebene IMEI'); // If length(EditIMEI.Text)<14 then begin // MemoInfo.lines.add('Falsche IMEI eingegeben'); { printf("USAGE: %s <IMEI>",argv[0]); exit(0); } printf("Code for NCKKN is : **00012*"); IMEI_code(argv[1],"NCKKN"); printf("#\n"); printf("Code for NSCKN is : **00022*"); IMEI_code(argv[1],"NSCKN"); printf("#\n"); printf("Code for SPCKS is : **00032*"); IMEI_code(argv[1],"SPCKS"); printf("#\n"); printf("Code for CKCCK is : **00042*"); IMEI_code(argv[1],"CKCCK"); printf("#\n"); printf("Code for PCKKP is : **00053*"); IMEI_code(argv[1],"PCKKP"); printf("#\n"); } int IMEI_code(char* IMEI, char *std) { //IMEI here //char IMEI[]="351736001251143"; //char *IMEI=argv[1]; char IMEI_PATCH[17],IMEI74[17],IMEI9C[17]; char IMEICC[33]; //char std[]="PCKKP"; char std1[]="DG1"; //char std2[]="PCKKP"; char dest[16];//std3[]="DG1"; int b=0; int i; //init date ------------------------ for (i=0;i<16;i++) dest[i]=0; for (i=0;i<37;i++) IMEICC[i]=0; strcpy(dest,std1); //end init date -------------------- for(i=0;i<8;i++) { b+=IMEI[i+6]; IMEI_PATCH[i]=IMEI[i+6]; } //printf("%x\n",b); for(i=0;i<8;i++) { IMEI_PATCH[i+8]=0x64-IMEI_PATCH[i]; } //ýòî íóëè â êîíåö ìàññèâîâ //nulls for end array //aka IMEI_PATCH[9]=0; //Not used //Íå èñïîëüçóåì:) IMEI_PATCH[16]=0; // printf("%s\n",IMEI_PATCH); switch(b%3) { default: case 0: for(i=0;i<16;i++) { IMEI74[i]=IMEI_PATCH[i]; };break; //0x1 Ðåâåðñèðîâàíèå (REVERSING) case 1: for(i=0;i<16;i++) { IMEI74[15-i]=IMEI_PATCH[i]; };break; //0x2 case 2: for(i=0;i<16;i++) { if(!(i%2)) //Ïðîâåðêà íà ÷åòíîñòü (is i/2 ???) { IMEI74[i]=IMEI_PATCH[i+1]; } else { IMEI74[i]=IMEI_PATCH[i-1]; } }; } strcat(dest,std); strcat(dest,std1); strcat(dest,std); //printf("HASH: %s\n",dest); for(i=0;i<16;i++) { IMEI9C[i]=(IMEI74[i]+dest[i])%100; } //printf("%s\n",IMEI74); //printf("%s\n",IMEI9C); IMEI74[16]=0; IMEI9C[16]=0; //ýòî íóëè â êîíåö ìàññèâîâ //nulls for end array switch(b%10) { case 1: for(i=0;i<8;i++) { IMEICC[i*4]=(IMEI74[i*2]|dest[i*2]|IMEI9C[i*2]|IMEI9C[i*2])%10; } break; case 2: for(i=0;i<8;i++) { IMEICC[i*4]=(IMEI74[(i*2)+1]|dest[(i*2)+1]|IMEI9C[(i*2)+1]|IMEI9C[(i*2)+1])%10; } break; case 3: for(i=0;i<8;i++) { IMEICC[i*4]=((IMEI74[i*2]|dest[i*2])&IMEI9C[i*2]|IMEI9C[i*2])%10; } break; case 4: for(i=0;i<8;i++) { IMEICC[i*4]=((IMEI74[(i*2)+1]|dest[(i*2)+1])&IMEI9C[(i*2)+1]|IMEI9C[(i*2)+1])%10; } break; case 5: for(i=0;i<8;i++) { IMEICC[i*4]=((IMEI74[i*2]|dest[i*2]|IMEI9C[i*2])&IMEI9C[i*2])%10; } break; case 6: for(i=0;i<8;i++) { IMEICC[i*4]=((IMEI74[(i*2)+1]|dest[(i*2)+1]|IMEI9C[(i*2)+1])&IMEI9C[(i*2)+1])%10; } break; case 7: for(i=0;i<8;i++) { IMEICC[i*4]=((IMEI74[i*2]&dest[i*2])|IMEI9C[i*2]|IMEI9C[i*2])%10; } break; case 8: for(i=0;i<8;i++) { IMEICC[i*4]=((IMEI74[(i*2)+1])&dest[(i*2)+1]|IMEI9C[(i*2)+1]|IMEI9C[(i*2)+1])%10; } break; case 9: for(i=0;i<8;i++) { IMEICC[i*4]=(((IMEI74[i*2]&dest[i*2])|IMEI9C[i*2])&IMEI9C[i*2])%10; } break; default: for(i=0;i<8;i++) { IMEICC[i*4]=(((IMEI74[(i*2)+1]&dest[(i*2)+1])|IMEI9C[(i*2)+1])&IMEI9C[(i*2)+1])%10; } } //printf("CODE is "); for(i=0;i<8;i++) printf("%d",IMEICC[i*4]); } //--------------------------------------------------------------------------- -über printf erfolgt die Ausgabe für den Rest brauch ich schon die ersten Denkanstöße -sind das funktionen z.B. int IMEI_code(char* IMEI, char *std); int main(int argc, char* argv[]) wen ja was gehört zu welcher funktion sind das variablen wenn ja was und wie -char IMEI_PATCH[17],IMEI74[17],IMEI9C[17]; -char IMEICC[33]; |
Re: C in Delphi Übersetzen
Zitat:
Zitat:
Die main ist dabei immer der Einsprungpunkt in das Programm, der Rückgabewert entspricht also dem Fehlerwert des Programms. In argc wird Dir die Anzahl der Kommandozeilen Argumente übergeben (an der ersten Stelle steht der Name der Anwendung). Bei Argv handelt es sich um ein Array von PChar, hier stehen dann die einzelnen Argumente als PChar drin (also argv[0] = Pfad des Programms,...). Zitat:
Was ich jetzt noch gesehen habe ist ein switch (entspricht case of), ! entspricht dem not, % entspricht modulo, | entspricht dem bitweisen oder (or). Die for-Schleifen geben erst die Variable (samt Initialisierung), eine boolsche Abbruchbedingung (beliebiger Art) und die Art des Inkrementierens an (durch ; getrennt). i++ heißt dabei, dass i um 1 erhöht wird (i++ entspricht i += 1 entspricht i := i + 1). Gruß Der Unwissende |
Re: C in Delphi Übersetzen
Danke erstmal da versuch ich erstmal mit klarzukommen
|
Re: C in Delphi Übersetzen
Delphi-Quellcode:
unit Unit3;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Mask, StdCtrls; type TForm3 = class(TForm) MemoInfo: TMemo; Button1: TButton; EditIMEI: TEdit; Check: TEdit; procedure Button1Click(Sender: TObject); procedure EditIMEIChange(Sender: TObject); procedure EditIMEIKeyPress(Sender: TObject; var Key: Char); procedure MemoInfoKeyPress(Sender: TObject; var Key: Char); procedure CheckKeyPress(Sender: TObject; var Key: Char); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form3: TForm3; IMEI,std:char; IMEI_PATCH,IMEI74,IMEI9C:array [0..16] of char; IMEICC:array [0..32] of char; // Argv:array [0..9] of Pchar; IMEI15:string; implementation {$R *.dfm} procedure TForm3.Button1Click(Sender: TObject); var NCKKN,NSCKN,SPCKS,CKCCK,PCKKP : string; NCKKN2,NSCKN2,SPCKS2,CKCCK2,PCKKP2 : string; begin //Start //+++++++++++++++++++++++++++++++++++++++++++++++++ MemoInfo.lines.add('Prüfe eingegebene IMEI'); If length(EditIMEI.Text)<14 then begin MemoInfo.lines.add('Falsche IMEI eingegeben'); end else begin IMEI15:= EditIMEI.Text+Check.Text; MemoInfo.Lines.Add('Codes für IMEI : '+imei15); {int IMEI_code(char* IMEI, char *std); int IMEI_code(char* IMEI, char *std) } { char std1[]="DG1"; char dest[16]; int b=0; int i; for (i=0;i<16;i := i + 1) dest[i]=0; for (i=0;i<37;i := i + 1) IMEICC[i]=0; strcpy(dest,std1); for(i=0;i<8;i := i + 1) { b+=IMEI[i+6]; IMEI_PATCH[i]=IMEI[i+6]; for(i=0;i<8;i := i + 1) IMEI_PATCH[i+8]=0x64-IMEI_PATCH[i]; IMEI_PATCH[16]=0; switch(b%3) { default: case 0: for(i=0;i<16;i := i + 1) { IMEI74[i]=IMEI_PATCH[i]; ;break; case 1: for(i=0;i<16;i := i + 1) { IMEI74[15-i]=IMEI_PATCH[i]; ;break; case 2: for(i=0;i<16;i := i + 1) { if(!(i%2)) { IMEI74[i]=IMEI_PATCH[i+1]; else { IMEI74[i]=IMEI_PATCH[i-1]; ; strcat(dest,std); strcat(dest,std1); strcat(dest,std); for(i=0;i<16;i := i + 1) { IMEI9C[i]=(IMEI74[i]+dest[i])%100; IMEI74[16]=0; IMEI9C[16]=0; switch(b%10) { case 1: for(i=0;i<8;i := i + 1) { IMEICC[i*4]=(IMEI74[i*2]|dest[i*2]|IMEI9C[i*2]|IMEI9C[i*2])%10; break; case 2: for(i=0;i<8;i := i + 1) { IMEICC[i*4]=(IMEI74[(i*2)+1]|dest[(i*2)+1]|IMEI9C[(i*2)+1]|IMEI9C[(i*2)+1])%10; break; case 3: for(i=0;i<8;i := i + 1) { IMEICC[i*4]=((IMEI74[i*2]|dest[i*2])&IMEI9C[i*2]|IMEI9C[i*2])%10; break; case 4: for(i=0;i<8;i := i + 1) { IMEICC[i*4]=((IMEI74[(i*2)+1]|dest[(i*2)+1])&IMEI9C[(i*2)+1]|IMEI9C[(i*2)+1])%10; break; case 5: for(i=0;i<8;i := i + 1) { IMEICC[i*4]=((IMEI74[i*2]|dest[i*2]|IMEI9C[i*2])&IMEI9C[i*2])%10; break; case 6: for(i=0;i<8;i := i + 1) { IMEICC[i*4]=((IMEI74[(i*2)+1]|dest[(i*2)+1]|IMEI9C[(i*2)+1])&IMEI9C[(i*2)+1])%10; break; case 7: for(i=0;i<8;i := i + 1) IMEICC[i*4]=((IMEI74[i*2]&dest[i*2])|IMEI9C[i*2]|IMEI9C[i*2])%10; break; case 8: for(i=0;i<8;i := i + 1) { IMEICC[i*4]=((IMEI74[(i*2)+1])&dest[(i*2)+1]|IMEI9C[(i*2)+1]|IMEI9C[(i*2)+1])%10; break; case 9: for(i=0;i<8;i := i + 1) { IMEICC[i*4]=(((IMEI74[i*2]&dest[i*2])|IMEI9C[i*2])&IMEI9C[i*2])%10; break; default: for(i=0;i<8;i := i + 1) { IMEICC[i*4]=(((IMEI74[(i*2)+1]&dest[(i*2)+1])|IMEI9C[(i*2)+1])&IMEI9C[(i*2)+1])%10; for(i=0;i<8;i := i + 1) printf("%d",IMEICC[i*4]); } MemoInfo.lines.add('NCKKN Code: **00012*'+(NCKKN)+'#'); MemoInfo.lines.add('NCKKN2 Code: **00012*'+(NCKKN2)+'#'); MemoInfo.lines.add('NSCKN Code: **00022*'+(NSCKN)+'#'); MemoInfo.lines.add('NSCKN2 Code: **00022*'+(NSCKN2)+'#'); MemoInfo.lines.add('SPCKS Code: **00032*'+(SPCKS)+'#'); MemoInfo.lines.add('SPCKS2 Code: **00032*'+(SPCKS2)+'#'); MemoInfo.lines.add('CKCCK Code: **00042*'+(CKCCK)+'#'); MemoInfo.lines.add('CKCCK2 Code: **00042*'+(CKCCK2)+'#'); MemoInfo.lines.add('PCKKP Code: **00052*'+(PCKKP)+'#'); MemoInfo.lines.add('PCKKP2 Code: **00052*'+(PCKKP2)+'#'); end; end; procedure TForm3.CheckKeyPress(Sender: TObject; var Key: Char); begin if not(Key in [#9,#8,'0'..'9']) then Key:=#0; end; procedure TForm3.EditIMEIChange(Sender: TObject); var i,x,c : integer; s,si : string; i15: char; begin x:=length(EditIMEI.text); if x < 14 then begin exit; check.Text:=''; end; c:=0; for i:=1 to 14 do begin if (EditIMEI.text[i]<'0') or (EditIMEI.text[i]>'9') then exit; if ((i and 1)<>0) then c := c +(Byte(EditIMEI.text[i]) and $0F) else if (EditIMEI.text[i]>'4') then c := c +((Byte(EditIMEI.text[i]) and $0F)shl 1) - 9 else c := c + ((Byte(EditIMEI.text[i]) and $0F) shl 1); end; s:=IntToStr(c); i:=length(s); i15:=s[i]; if i15<>'0' then Byte(i15):=$6A-Byte(i15); check.Text:=i15; end; procedure TForm3.EditIMEIKeyPress(Sender: TObject; var Key: Char); var x:integer; begin if not(Key in [#9,#8,'0'..'9']) then Key:=#0; x:=length(EditIMEI.text); if x < 14 then begin exit; check.Text:=''; end; end; procedure TForm3.FormCreate(Sender: TObject); begin // end; procedure TForm3.MemoInfoKeyPress(Sender: TObject; var Key: Char); begin Key:=#0; end; end. Komm net weiter kann mir jemend n klkeinen teil vormachen Bitte? |
Re: C in Delphi Übersetzen
Oh, ein Unlocker zur Freischaltung der Locks welche durch die Provider gesetzt wurden. Dies ist laut Vertragsbedingungen aller Provider hier in Deutschland illegal. Wenn der Vertrag ausgelaufen ist, dann kannst du die Unlockcodes auch anfragen bei den Providern und ist deutlich einfacher als das hier...
|
Re: C in Delphi Übersetzen
Ja Danke das wird Helfen
Der Calc ist vojn einen 5 Jahre alten Modell dafür gibts genug calcs ging lediglich darum das Konvertieren zu lernen |
Re: C in Delphi Übersetzen
Zitat:
Code:
wird zu :
int IMEI_code(char* IMEI, char *std)
{ //IMEI here //char IMEI[]="351736001251143"; //char *IMEI=argv[1]; char IMEI_PATCH[17],IMEI74[17],IMEI9C[17]; char IMEICC[33]; //char std[]="PCKKP"; char std1[]="DG1"; //char std2[]="PCKKP"; char dest[16];//std3[]="DG1"; int b=0; int i; //init date ------------------------ for (i=0;i<16;i++) dest[i]=0; for (i=0;i<37;i++) IMEICC[i]=0; strcpy(dest,std1); //end init date --------------------
Delphi-Quellcode:
Hoffe das hilft schon mal weiter. Im folgenden sollte das meiste ähnlich aussehen. Die Unterschiede zu Delph sind dann noch:
function IMEI_code(IMEI: PChar; std: PChar);
var IMEI_PATCH, IMEI74, IMEI9C: Array[0..16] of Char; IMEICC : Array[0..32] of Char; stdl: PChar; dest: Array[0..15] of Char; b: Integer; i: Integer; begin stdl := 'DGL'; // hier sollte der Compiler die Umwandlung selbst schaffen b := 0; //init date ------------------------ for i := 0 to 15 do dest[i] := 0; // schneller möglich durch // fillChar(dest[0], 16, 0); for i := 0 to 36 IMEICC[i] := 0; // benötigt Unit SysUtils strCopy(@dest[0], stdl); //end init date -------------------- end; { ist ein begin, } ist ein end b += x entspricht b := b + x 0x65 ist Hex, also $65 switch entspricht case, ein case x: entspricht der auswahl im Delphi case, ein default im switch ist das else. b%3 ist b mod 3 Gruß Der Unwissende [edit] Roter Kastern?! [/edit] |
Re: C in Delphi Übersetzen
Danke damit sollte ich jetzt klarkommen
|
Re: C in Delphi Übersetzen
Zitat:
Ich benutze diesen Link wenn ich probleme beim Konvertieren habe. ![]() Hoffe das hilft dir auch weiter. Gruss Emil |
Re: C in Delphi Übersetzen
Warum ist denn hier das Array mit 33 Stellen gross deklariert und unten dann werden 37 Cellen mit 0 gefuellt?
Delphi-Quellcode:
IMEICC:array [0..32] of char;
Delphi-Quellcode:
for (i=0;i<37;i++)
IMEICC[i]=0; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz