002
22.10.2006, 09:55 Uhr
FloSoft
Medialer Over-Flow (Administrator)
|
ok, da scheint einer von VB aus zu kommen 
chr macht imho aus einem Zeichen seinen ascii-code, ord aus einem ascii-code ein zeichen. In C++ ist das überflüssig, da jede Variable nur je nach Betrachtung unterschiedlich bei der ausgabe interpretiert wird.
Dann string_char_at ist so in der form auch "wurscht", da Zeichenketten "nur" Arrays sind, also Zugriff per Indexoperator.
Ansonsten sind da gewaltig viele Fehler drin:
PCHAR ist ein Pointer auf ein char (also char*) d.h "PCHAR result" zeigt auf den konstanten Speicherbereich "", der gerade mal ein Element enthält (nämlich '\0') d.h wenn du da was hinschreiben willst krachts.
Weiterhin kannst du Zeichenketten nicht mit + aneinanderfügen, zumindest keine char-arrays.
Dann frag ich mich was der falsche strcat-Aufruf da am Ende soll. Deine Funktion soll doch einen double zurückliefern (fliesskommazahl mit doppelter genauigkeit, also z.b 0.454345345453)
Dann die Initialisierungen:
Er meckert da zwar nicht, nur schreibst du in den 257isten "Variableneintrag" eine 0 rein, du hast aber nur 256 -> crash bzw undefiniertes Verhalten.
Dann - warum benutzt du globale Variablen? Variablen immer mit dem kleinsten Gültigkeitsbereich definieren.
Ansonsten Modulvariablen immer static. Modulvariablen sind eben Variablen, die nur in der jeweiligen C++-Datei benutzt und gebraucht werden.
Hier mal so ungetestet:
| C++: |
export int crypt(char *data, char *pwd) { int key[256], box[256]; int pwdlen = strlen(pwd); int datalen = strlen(data); int i, j = 0, k = 0, l = 0, tmp = 0; int result = 0;
for(i = 0; i < 256; ++i) { key[i] = pwd[ (i % pwdlen) + 1]; box[i] = i; }
for(i = 0; i < 256; ++i) { j = (j + box[i] + key[i]) % 256; tmp = box[i]; box[i] = box[j]; box[j] = tmp; }
for(i = 0; i < datalen; ++i) { k = (k + 1) % 256; j = (j + box[k]) % 256;
tmp = box[k]; box[k] = box[j]; box[j] = tmp;
l = box[(box[k] + box[j]) % 256]; result += data[i + 1] ^ l; } return result; }
|
Achja, das double-result bringt ja irgendwo gar nix, da du nirgends ne kommazahl auch nur ansatzweise hast  -- class God : public ChuckNorris { }; Dieser Post wurde am 22.10.2006 um 09:57 Uhr von FloSoft editiert. |