Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Delphi / Kylix / Turbo Pascal » von C++ in TP

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.04.2004, 09:50 Uhr
~RedEagle
Gast



C++:
char *crypt(char *buffer, int len, int mov)
{
  for(int x = 0; x < len; x++)
  {
    buffer[x] += mov;
    if(buffer[x] > 255)
      buffer[x] -= 255;
    if(buffer[x] < 0)
      buffer[x] += 255;
  }
  return buffer;
}



Ich möchte diesen code in TP habe, kann aber nicht alles übersetzten:

Code:
procedure crypt() {???}
var x:Integer;
begin
for x=0 to len-1 begin
  buffer[x] = buffer[x] + mov;
  if buffer[x] > 255 then buffer[x] = buffer[x] - 255;
  if buffer[x] < 0    then buffer[x] = buffer[x] + 255;
end;
end;



Das ist der ansatz, aber ich komme weder in c++ noch in TP mit diesen "*" clar, wie kann ich das machen??
(Am besten Breichtigten code posten)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.04.2004, 15:43 Uhr
typecast
aka loddab
(Operator)


Leider ist es schon lange her und ich habe leider keinen Kompiler zum testen, aber vielleicht kannst du ja darauf aufbauen:


Code:
procedure crypt(var String buffer; len, mov : integer)
var i:Integer;
begin
  for i=1 to len begin
     buffer[x] = chr(ord(buffer[x])+mov);
     if ord(buffer[x]) > 255 then
         buffer[x] = chr(ord(buffer[x]) - 255);
     if buffer[x] < 0 then
         buffer[x] = chr(ord(buffer[x]) +255);
  end;
end;



So erstens glaube ich mich daran zu erinnern, das PASCAL-Strings mit dem Index 1 beginnen. Zweitens bin ich mir fast sicher, dass man mit chars nicht wie mit Zahlen rechnen kann.
Ob es die Funktionen ord und chr in TP oder in Delphi gibt weiß ich leider nicht mehr. Auch nicht in welcher Unit sie stehen :-(

Aber die Online-Hilfe sollte dir dazu mehr sagen können
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.04.2004, 15:49 Uhr
RedEagle



Benutze TP auch nur für die Schule (10. Klasse) Und benurtze Privat NUR C++, habe deshalb nicht fiel ahnung von TP, Ich Probiers mal aus (Habe morgen ne Doppelstunde) und durchsuch dann mal alle Units


--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
01.05.2004, 23:40 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Alternativ dieser Code:

Code:
function crypt(buffer: string; mov: integer): string;
var
   i, x: integer;

begin
   for i := 1 to length(buffer) do
   begin
      x := ord(buffer[ i ]) + mov;
      if x > 255 then x := x - 255;
      if x <   0 then x := x + 255;
      buffer[ i ] := chr(x);
   end;
   result := buffer;
end;


--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.

Dieser Post wurde am 01.05.2004 um 23:41 Uhr von Bruder Leif editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
02.05.2004, 09:11 Uhr
RedEagle



@Bruder Leif : danke, der code sieht viel schöner aus als meiner

function crypt(buffer: string; mov: integer): string;

Was muss ich hier übergeben??
Wie Funktioniert der code??
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
02.05.2004, 09:34 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Im Prinzip übergibst Du einfach einen beliebigen String und einen Zahlenwert von 0 bis 255. 0 bedeutet "keine Änderung", ist also recht ineffektiv
Die Routine geht einfach jedes Zeichen im String durch, addiert die übergebene Zahl zum ASCII-Wert und passt auf, dass dabei kein Über- oder Unterlauf stattfindet (Zahlen kleiner als 0 oder größer als 255). Das ganze könnte man als sehr einfache Verschlüsselung ansehen.
Der Trick mit dem Weglassen von "len" liegt daran, dass in Pascal jeder String im Index 0 seine Länge in Bytes stehen hat, in C/C++ dagegen normalerweise das Ende des Strings mit 0x00 abgeschlossen wird. Damit können wir es uns sparen, denselben Wert nochmal zu übergeben...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
02.05.2004, 11:01 Uhr
~RedEagle
Gast


Zitat:
Das ganze könnte man als sehr einfache Verschlüsselung ansehen.

Dass sllte man auch si sehen Ich möschte diesen einfachen code als Beispiel der Verschlüsselung "vorlegen" für einen Vortrag über Verschlüsselung.

Da ich in der 10. Klasse (info-Kurs) bin, habe meine Mitschüler keine ahnung von Programmieren (obwohl sie es gelernt haben ). Deshalb sollte der code nicht so anspruchsfoll sein


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
10.08.2004, 13:53 Uhr
~Orthografia
Gast


... und du hast keine Ahnung von der deutschen Rechtschreibung... oder nur keine Zeit, darauf zu achten. "anspruchsfoll" mit f tut ja weh! Groß-und Kleinschreibung sei dir ja verziehen.

Viel Erfolg noch!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Delphi / Kylix / Turbo Pascal ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: