Einzelnen Beitrag anzeigen

KSebi

Registriert seit: 10. Sep 2005
Ort: Neu-Isenburg
29 Beiträge
 
Delphi 2005 Professional
 
#1

Quellcode des Programms in Delphi übersetzen - Hilfe gesucht

  Alt 28. Nov 2005, 21:31
Einen schönen guten Abend an die Delphi Gemeinde hier.

Und zwar habe ich hier ein Programmquellcode, der einen Serial berechnet.
Anfolgend würde ich gerne den vom Programm erstellten, mit der Benutzereingabe abgleichen.
Das Problem ist, dass der Quellcode in PUREBASIC geschrieben ist.
Zudem sind Assembler Anweisungen enthalten.

Ich hoffe, dass es hier jemden gibt, der mir helfen kann, den Programmteil so umzuschreiben, dass dieser in Delphi funktioniert.

Hier nun also der PUREBASIC code:
Delphi-Quellcode:
        uName.s = GetGadgetText(#txtName) { uname wird die eingabe des Textfeldes Name zugewiesen}
         tempChar.l
         nameLen.b = Len(uName) {Länge von uname wird ermittelt}
         Debug maxLen
         If nameLen<3 {wenn länge kleiner 3 ist ...}
           SetGadgetText(#txtSerial,"Name Too short")
          ElseIf nameLen>=50
           SetGadgetText(#txtSerial,"Name Too Long")
        Else {bis hier hin ist es noch ganz klar, aber ab jetzt unklar}
             XOR eax,eax
             XOR ebx,ebx
         For i = 1 To nameLen
           tempChar = Asc(Mid(uName,i,1))
           MOV eax,tempChar
           XOR eax,201527
           ADD eax,3735928559
           IMUL eax,eax, 1638
           SUB eax,464370355
           SHL eax,3
           XOR eax,3545092109
           ADD ebx,eax
         Next
      
         MOV serial, ebx
         serial = Hex(serial)
         SetGadgetText(#txtSerial,serial)
Ich hoffe, dass ihr diesen Assembler code versteht, denn ich habe so meine Probleme. Sollte es auch ohne Assembler code gehen ok, hätte aber gerne diese Schreibweise, da ich den code dann besser nachvollziehen kann.

Sollte diese Sprahe nicht ganz klar sein, dann hier nochmal das gleiche als VBASIC

Delphi-Quellcode:
Dim EAX,EBX 'Declaring Variables (With no specific Type however Double would be an Ideal type)
   Dim i As Integer
'Counter

   'check name length
   
   If(Len(txtName.text)<3) Then
      txtSerial.Text = "Name Too short"
      Exit Sub
'Like a return statement..
   End If

   'Begin Algo

   For i = 1 to len(txtName.text)
      EAX = Asc(Mid(txtName.text,i,1))
'Get char
      EAX = EAX Xor 201527 'Note This might not work with big numbers (Xor)
      EAX = EAX + 3735928559
      EAX = EAX * 1638
      EAX = EAX - 464370355
      EAX = EAX * (2^3)
'SHL EAX, 3 ... EAX * 8 .. SHL is the same as EAX * 2^N
      EAX = EAX Xor 3545092109
      EBX = EBX + EAX
   Next i

   'End Algo

   txtSerial.Text = Hex(EBX)
'Note this will probably cause an overflow in VB
Also ich würde mich seeeeeeeehr darüber freuen, wenn mir jemand den code umschreiben könnte.
Vielen Dank schonma im Vorraus!!!

Viele Grüße
  Mit Zitat antworten Zitat