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 2 von 2     12   
Olli
(Gast)

n/a Beiträge
 
#11

Re: C in Delphi Übersetzen

  Alt 22. Apr 2007, 00:08
Zitat von Mackhack:
Warum ist denn hier das Array mit 33 Stellen gross deklariert und unten dann werden 37 Cellen mit 0 gefuellt?
Ach, das verstehst du nicht. Das ist künstlerische Freiheit.
  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
 
#12

Re: C in Delphi Übersetzen

  Alt 22. Apr 2007, 03:50
Zitat von Olli:
Zitat von Mackhack:
Warum ist denn hier das Array mit 33 Stellen gross deklariert und unten dann werden 37 Cellen mit 0 gefuellt?
Ach, das verstehst du nicht. Das ist künstlerische Freiheit.
Very nice
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
Gehstock

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

Re: C in Delphi Übersetzen

  Alt 22. Apr 2007, 12:55
Zitat von Mackhack:
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;
laut Orginal Code
char IMEICC[33]; ist das n IMEICC:array [0..32] of char; zumindest hab ich das so verstanden mit C hab ichs net so dicke
Marcel
  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
 
#14

Re: C in Delphi Übersetzen

  Alt 22. Apr 2007, 15:09
@Gehstock:

Was hab ich denn anderes behauptet? Ich schrieb doch dass es als 33 zelliges Array deklariert wurde aber 37 Zellen mit 0en gefuellt wird!
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
Olli
(Gast)

n/a Beiträge
 
#15

Re: C in Delphi Übersetzen

  Alt 22. Apr 2007, 23:24
Zitat von Mackhack:
Was hab ich denn anderes behauptet? Ich schrieb doch dass es als 33 zelliges Array deklariert wurde aber 37 Zellen mit 0en gefuellt wird!
memset() waere hier im Orginal IMO angebrachter. Mit dem sizeof-Operator ja dann auch sicher zu handhaben. Vermutlich eine nachtraegliche Aenderung im Code, wo man dann wieder sieht wozu der sizeof-Operator (der bekanntlich keine Runtimekosten hat) so gut ist.
  Mit Zitat antworten Zitat
Der_Unwissende

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

Re: C in Delphi Übersetzen

  Alt 23. Apr 2007, 07:53
Zitat von Olli:
memset() waere hier im Orginal IMO angebrachter. Mit dem sizeof-Operator ja dann auch sicher zu handhaben.
Aber auch nur, wenn es sich wie hier um eine lokale Größe handelt. Spätestens beim Übergeben (der Adresse) an eine Routine steht man doch wieder vor dem Problem, dass ein Array in C (oder auch ein Memset) keine (automatische) Größenangabe besitzt. Natürlich hätte sizeOf hier geholfen, aber da es nicht benutzt wird, hat Mackhack doch Recht und der Code würde so zu etwas unerwarteten Möglichkeiten führen (je nachdem was gerade im Speicher überschrieben wird).
  Mit Zitat antworten Zitat
Gehstock

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

Re: C in Delphi Übersetzen

  Alt 26. Apr 2007, 20:10
Doppelposting
Marcel
  Mit Zitat antworten Zitat
Gehstock

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

Re: C in Delphi Übersetzen

  Alt 26. Apr 2007, 20:13
Aktueller stand ist so
Delphi-Quellcode:
procedure TForm3.IMEI_code(IMEI: PChar; std,std1: PChar);
var IMEI_PATCH, IMEI74, IMEI9C: Array[0..16] of Char;
    IMEICC : Array[0..32] of Char;
    dest: Array[0..15] of Char;
    b,i: Integer;

begin
  std1 := 'DGL';
  b := 0;

  for i:= 0 to 15 do
   dest[i] := '0';
     fillchar(IMEICC[0],32,0); //for i:= 0 to 36 do IMEICC[i] := '0';
     //
  strCopy(@dest[0], std1);

  for i:=0 to 7 do begin
  b:=b+strtoint(IMEI[i+6]);
  IMEI_PATCH[i]:=IMEI[i+6];
  end;

  for i:=0 to 7 do begin
// IMEI_PATCH[i+8]:=$64-IMEI_PATCH[i];
  end;
  IMEI_PATCH[16]:='0';

  Case b mod 3 of
  0:for i:=0 to 15 do begin
    IMEI74[i]:=IMEI_PATCH[i];
     break;
      end;// 0
  1:for i:=0 to 15 do begin
    IMEI74[15+i]:=IMEI_PATCH[i+1];
     break;
     end;// 1
  2:for i:=0 to 15 do begin
    if i mod 2 = 0 then begin
      IMEI74[i]:=IMEI_PATCH[i+1];
      end;
  end
       else Begin
        IMEI74[i]:=IMEI_PATCH[i-1];
  end; // 2
   End; //CASE of
    strcat(dest,std);
    strcat(dest,std1);
    strcat(dest,std);

      for i:=0 to 15 do begin
// IMEI9c[i]:=(IMEI74[i]+dest[i])mod 100;
      end;
      IMEI74[16]:='0';
      IMEI9c[16]:='0';
   Case b mod 10 of
  1:for i:=0 to 7 do begin
// IMEICC[i*4]:=(IMEI74[i*2] or dest[i*2] or IMEI9c[i*2] or IMEI9c[i*2]) mod 10;
     break;
  end;//1
  2:for i:=0 to 7 do begin
// IMEICC[i*4]:=(IMEI74[(i*2)+1] or dest[(i*2)+1] or IMEI9c[(i*2)+1] or IMEI9c[(i*2)+1]) mod 10;
    break;
  end;//2
  3:for i:=0 to 7 do begin
// IMEICC[i*4]:=((IMEI74[i*2] or dest[i*2]) and IMEI9c[i*2] or IMEI9c[i*2]) mod 10;
    break;
  end;//3
  4:for i:=0 to 7 do begin
// IMEICC[i*4]:=((IMEI74[(i*2)+1] or dest[(i*2)+1]) and IMEI9c[(i*2)+1] or IMEI9c[(i*2)+1]) mod 10;
    break;
  end;//4
  5:for i:=0 to 7 do begin
// IMEICC[i*4]:=((IMEI74[i*2] or dest[i*2] or IMEI9c[i*2]) and IMEI9c[i*2]) mod 10;
    break;
  end;//5
  6:for i:=0 to 7 do begin
// IMEICC[i*4]:=((IMEI74[(i*2)+1] or dest[(i*2)+1] or IMEI9c[(i*2)+1]) and IMEI9c[(i*2)+1]) mod 10;
    break;
  end;//6
  7:for i:=0 to 7 do begin
// IMEICC[i*4]:=((IMEI74[i*2] and dest[i*2]) or IMEI9c[i*2] or IMEI9c[i*2]) mod 10;
    break;
  end;//7
  8:for i:=0 to 7 do begin
// IMEICC[i*4]:=((IMEI74[(i*2)+1]) and dest[(i*2)+1] or IMEI9c[(i*2)+1] or IMEI9c[(i*2)+1]) mod 10;
    break;
  end;//8
  9:for i:=0 to 7 do begin
// IMEICC[i*4]:=(((IMEI74[i*2] and dest[i*2]) or IMEI9c[i*2]) and IMEI9c[i*2]) mod 10;
    break;
  end;//9
  else
    for i:=0 to 7 do begin
// IMEICC[i*4]:=(((IMEI74[(i*2)+1] and dest[(i*2)+1]) or IMEI9c[(i*2)+1]) and IMEI9c[(i*2)+1]) mod 10;
    break;
  end;//else
   End; //Case of
  end; //Procedure
da sind noch einige sachen wo ich net weiterkomm
Marcel
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#19

Re: C in Delphi Übersetzen

  Alt 27. Apr 2007, 12:17
Hallo,

wenn du nicht darauf angewiesen bist, das ganze zu C kompatibel zu halten oder das in eine DLL packen willst, dann mach aus den PChars einfach strings. dann kannst du die bei dir noch auskommentierten sachen praktisch 1 zu 1 übernehmen, du musst nur darauf achten, dass der zugriff in C 0-basiert und der string-zugriff in Delphi 1-basiert ist, d.h., du musst alle indizes um eins erhöhen.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 02:42 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