Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Problem mit verdopplung bei verwendung von For schleife
Larus - Sa 21.05.05 17:37
Titel: Problem mit verdopplung bei verwendung von For schleife
Ich habe eine externe Funktion, die einen Text bekommt und einen veränderten zurückliefert! verwende ich diese Funktion 3 mal hintereinander passiert nichts mit der Länge! lass ich aber die forschleife mit der Funktion laufen verdoppelt und verdreifacht sich der Text! Wieso? HILFE und vielen dank im voraus
F34r0fTh3D4rk - Sa 21.05.05 17:38
ähm ja :D code ? :shock:
Zitat: |
Ich habe eine externe Funktion
|
zeig mal her (oder hast den source net ?)
Zitat: |
passiert nichts mit der Länge
|
welche länge ?
Zitat: |
lass ich aber die forschleife mit der Funktion laufen verdoppelt und verdreifacht sich der Text!
|
welche forschleife ?
Weil !
stifflersmom - Sa 21.05.05 17:39
Uups. meine Glaskugel hat irgendwie einen Defekt. :?:
Worum geht es nur?
Larus - Sa 21.05.05 18:29
Länge des Textes mom ich schick die...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| function caeser(Text : String; Key : SmallInt; Entschluesseln : boolean):String; var i : integer; begin For i:=1 to Length(Text) do begin If (Ord(Text[i])-64>=1) And (Ord(Text[i])-64<=26) Then If Entschluesseln Then Result:=Result+(Chr((((Ord(Text[i])-65)+(26-Key))Mod 26) + 65)) Else Result:=Result+(Chr((((Ord(Text[i])-65)+(Key))Mod 26) + 65)) Else Result:=Result+Text[i]; end; end; |
und hier die forschleife!
Delphi-Quelltext
1: 2: 3: 4: 5:
| for i:=1 to Length(key) do begin If ((Ord(key[i])-65) Mod 2) = 0 Then text:=caeser(Text, (Ord(key[i])-65), false); end; |
Der Glaskugelwitz ist alt!
AXMD - Sa 21.05.05 18:37
Deine Forschleife ist komplett sinnlos. Du verschlüsselst da ja wieder zeichenweise, obwohl die Caesar-Funktion sich ja schon darum kümmert, dass alles verschlüsselt wird...
AXMD
PS.:
Zitat: |
Der Glaskugelwitz ist alt! |
Aber hier äußerst passend :mrgreen:
Larus - Sa 21.05.05 19:25
Die forschleife enthält noch weitere Elemente anderer verschlüsselungen nur da ich die ausgeklammert hatte zur fehlersuche fand ich heraus, dass es an Caesar und viginere liegt! Nun will ich wissen woran das liegt! Sinnlos ist die Schleife auf jeden Fall nicht nur hab ich die anderen Elemente die unwichtig sind net gepostet!
AXMD - Sa 21.05.05 19:31
Was nicht schlecht wäre, wären Kommentare oder zumindest eine Erläuterung, was die ganzen doppelt und dreifach verschachtelten Klammern mit den Modulos und dem 'A' (#65) machen. Denn ich kenne Caesar, habe es aber um einiges einfacher in Erinnerung. Und wie wär's, wenn du auch Teile vom "unwichtigen" Code posten würdest, damit wir ausschließen können, dass der Fehler dort liegt
AXMD
crakos - Sa 21.05.05 20:00
check grad net so was nun sache ist, schick mal den vollständigen code und sag jetzt was er nicht macht, oder sagt, oder was nun los ist Oo
alzaimar - So 22.05.05 17:36
Wieso initialisierst Du eigentlich das 'Result'at deiner Funktion nicht? Ich denke, da gibt es die witzigsten Effekte, wenn man seine Variablen nicht initialisiert. Dazu gehören auch solche von Dir Beobachteten.
crakos - So 22.05.05 18:28
hä? result ist der wert, den die funktion zurück gibt Oo
ka ob man mit result rechnen kann ala result:=result+x; ich mache das immer mit varibalen und sage nur am ende result:=dievariable
aber müsstest du dann nicht sagen result:=''; am anfang, denn sonst ist result ja vielleicht irgendetwas (nur sone idee :))
Larus - So 22.05.05 21:25
Titel: !
alzaimar hat folgendes geschrieben: |
Wieso initialisierst Du eigentlich das 'Result'at deiner Funktion nicht? Ich denke, da gibt es die witzigsten Effekte, wenn man seine Variablen nicht initialisiert. Dazu gehören auch solche von Dir Beobachteten. |
kk ich werd es mal versuchen! Nur wundert mich wieso das ausserhalb der For-schleife nicht passiert!
Türlich kann man mit Resukt rechnen. Aber sollte das Problem mit dem Tip von alzaimar nicht lösbar sein mach ich es auch mit extravariabeln!
Larus - So 22.05.05 22:35
Problem gelöst! es war die sache mit Result:=''; Normalerweise hat er das nicht gemacht, aber die forschleife hat wohl immer zu schnell zuviele daten reingepumpt! :P
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!