AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

C in Delphi Übersetzen

Ein Thema von Gehstock · begonnen am 11. Apr 2007 · letzter Beitrag vom 27. Apr 2007
Antwort Antwort
Seite 1 von 2  1 2      
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#1

C in Delphi Übersetzen

  Alt 11. Apr 2007, 18:32
Kann mir jemand helfen diesen c Source in Delphi zu Übersetzen
Delphi-Quellcode:
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]);


}
//---------------------------------------------------------------------------
-Klar ist das war ne Consolen Anwendung
-ü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];
Marcel
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: C in Delphi Übersetzen

  Alt 11. Apr 2007, 19:13
Zitat von Gehstock:
-über printf erfolgt die Ausgabe
Kannst Du mit Format nachbilden.

Zitat von Gehstock:
int IMEI_code(char* IMEI, char *std);
int main(int argc, char* argv[])

wen ja was gehört zu welcher funktion
Ja, das sind Funktionen. In C haben die immer die Form <Rückgabetyp><Name>(<Argumente>);
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 von Gehstock:
sind das variablen wenn ja was und wie
-char IMEI_PATCH[17],IMEI74[17],IMEI9C[17];
-char IMEICC[33];
Das hier sind Variablen, die haben (wie bei Argumenten auch) die Form <Datentyp><Name>. Die eckigen Klammern zeigen wiederum ein Array an, Du hast also ein Array von 17 Elementen des Typs char mit dem Namen IMEI_PATCH, IMEI74 und IMEI9C, sowie ein Char-Array der Länge 33 (immer von [0] .. [länge - 1], wie in Delphi auch).

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
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#3

Re: C in Delphi Übersetzen

  Alt 11. Apr 2007, 19:28
Danke erstmal da versuch ich erstmal mit klarzukommen
Marcel
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#4

Re: C in Delphi Übersetzen

  Alt 21. Apr 2007, 19:52
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<>'0then 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?
Marcel
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: C in Delphi Übersetzen

  Alt 21. Apr 2007, 20:08
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...
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#6

Re: C in Delphi Übersetzen

  Alt 21. Apr 2007, 20:10
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
Marcel
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#7

Re: C in Delphi Übersetzen

  Alt 21. Apr 2007, 20:23
Zitat von Gehstock:
Komm net weiter kann mir jemend n klkeinen teil vormachen Bitte?
Code:
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 --------------------
wird zu :

Delphi-Quellcode:
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;
Hoffe das hilft schon mal weiter. Im folgenden sollte das meiste ähnlich aussehen. Die Unterschiede zu Delph sind dann noch:
{ 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]
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#8

Re: C in Delphi Übersetzen

  Alt 21. Apr 2007, 20:33
Danke damit sollte ich jetzt klarkommen
Marcel
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

Re: C in Delphi Übersetzen

  Alt 21. Apr 2007, 21:12
Zitat von Gehstock:
Danke damit sollte ich jetzt klarkommen
Will auch noch mein kommentar dazu abgeben:
Ich benutze diesen Link wenn ich probleme beim Konvertieren habe.

http://www.e-strube.net/web/praxisso...om/kapit2a.htm

Hoffe das hilft dir auch weiter.

Gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#10

Re: C in Delphi Übersetzen

  Alt 21. Apr 2007, 23:18
Warum ist denn hier das Array mit 33 Stellen gross deklariert und unten dann werden 37 Cellen mit 0 gefuellt?

IMEICC:array [0..32] of char;
Delphi-Quellcode:
for (i=0;i<37;i++)
  IMEICC[i]=0;
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz