| Autor |
Beitrag |
mlhk
      
Beiträge: 30
|
Verfasst: Do 30.04.09 21:36
hey,
also mein problem besteht dain das ich den text in einem memo auslesen möchte, allerdings ist nichr nur aus einer zeile sondern aus dem ganzen memo, memo1.text funktionier schon mal bei nur fehlernhaft, memo1.lines.add(1) auch (obwohl das auch nicht die lösung wäre) und mit ner schleife alle durch gehen würd ich gern aber da müsst ich halt auh erstmal de ganze sache für eine line hinbekommmen
danke schon mal im voraus
mfg
max
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 30.04.09 21:41
Memo1.Text enthält den kompletten Text aller Zeilen. Aber inkl. der Zeilenumbrüche, wenn du es also in einer Zeile irgendwo ausgeben willst, dann klappt das so nicht, meinst du das mit "nur fehlernhaft"?
Zeig doch einmal konkret wie du es versucht hast und sag was dabei nicht klappt.
|
|
mlhk 
      
Beiträge: 30
|
Verfasst: Do 30.04.09 21:44
ja, genau dieses problem stellt sich mir, nur das ich das mit den zeilenumbrüchen nicht wusste, also wie umgeh ich das, kannn ich die suchen und raus löschen oder geht das einfacher
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 30.04.09 21:59
Wenn du den Text ohne die Zeilenumbrüche brauchst, dann kannst du die so entfernen: Delphi-Quelltext 1:
| DeinTextString := StringReplace(Memo1.Text, #13#10, ' ', [rfReplaceAll]); | Aber dir muss natürlich klar sein, dass dies zur Speicherung z.B. wenig geeignet ist, da die Zeilenumbrüche so natürlich komplett weg sind. (Was du vor hast, hast du ja nicht geschrieben.  )
|
|
mlhk 
      
Beiträge: 30
|
Verfasst: Do 30.04.09 22:03
also zum verwendungszweck, ich will damit eine xor verschlüsselung machen und dazu muss ich natürlich den text erstmal in eine variable speichern
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 30.04.09 22:18
Bei der Verschlüsselung stören doch die Zeilenumbrüche nicht, und in der Variable drin steht ja der ganze Text inkl. der Zeilenumbrüche.
Aber es wäre doch sehr schlecht, wenn du einen Text verschlüsselst und nach der Entschlüsselung plötzlich die Zeilenumbrüche weg wären. 
|
|
mlhk 
      
Beiträge: 30
|
Verfasst: Do 30.04.09 22:22
stimmt schon, aber ich verschlüssel ja jedes zeichen, was das mit den zeilenumbrüchen etwas ungünstig gestaltet
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 30.04.09 22:25
Ja, du musst doch jedes Zeichen verschlüsseln, dazu zählen auch Leerzeichen, Kommata, Zeilenumbrüche (Zeichen 13 und 10 nacheinander), ... 
|
|
mlhk 
      
Beiträge: 30
|
Verfasst: Do 30.04.09 22:26
ich hab mir das ja auch alles so gedacht, aber irgendwie will das bei mirmit dem memo nicht richtig
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 30.04.09 22:29
Ohne Quelltext kann aber auch niemand etwas dazu sagen warum das nicht klappt. 
|
|
mlhk 
      
Beiträge: 30
|
Verfasst: Do 30.04.09 22:35
ja klar, ich hab da bloss noch paar wirklich große probleme drin, ich schreib den morgen abend rein, okay
tut mir leid, das kommt jetzt komisch aber ich den hier wenigstes aus führbar reinstellen
--- Moderiert von Narses: Beiträge zusammengefasst---
also ich hab hier mal den code
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| function a (text:string;schlüssel:string) :char ; var code,key,i :integer; var ent:char; begin code:= ord (text); key:= ord (schlüssel); ent:= char (code XOR key); a:=ent; end;
procedure TForm2.Button1Click(Sender: TObject); var key,V,text : string; var b,i : integer; begin text:= edit4.text; key:= edit3.text; b:= length (text); V:=''; for I := 0 to b do begin V:= a (text[i],key); edit5.Text:=V; end; end; | hab jetzt nochmal dereinfach halthalber editfelder benutzt, vom compiler kommt kein porblem, esfunktioniert halt bloss nicht
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Fr 01.05.09 02:27
Also zu allererst mal benenn die Funktionen und Variablen gescheit, da blickt ja niemand mehr durch  Dann könnte man den Code noch ein bisschen formatieren, damit man ihn auch lesen kann ...
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| function a(text, key: Char): char; begin Result := Char(Ord(text) xor Ord(key)); end;
procedure TForm2.Button1Click(Sender: TObject); var V, text: string; key: Char; i: integer; begin text := Edit4.text; key := Edit3.text[1]; V := ''; for i := 0 to Length(text) do V := V + a(text[i], key);
Edit5.Text := V; end; |
Und schon erkennt man einen Fehler, es ist natürlich unsinnig, dem Edit in der Schleife eine Zuweisung zu machen. Ausserdem wird der Inhalt von V immer wieder überschrieben, statt neuer hinzugefügt.
Richtig wäre die Zeile also V := V + a(text[i], key); und hinter der Schleife dann Edit5.Text := V;
Weiter: Der Compiler wird sich sehr wohl beschweren, bei dem, was du geschrieben hast. Ord akzeptiert nur Chars, du gibst Ord aber einen String. Da knallt's natürlich. Ich hab daher deine funktion "a" (  ) etwas umgeschrieben... und bei der Gelegenheit auch den Rest vom Code aufgeräumt
Ein weiteres Problem bei der xor-Verschlüsselung: Es können bei der Berechnung Steuerzeichen herauskommen die die Anzeige in einem Edit oder Memo unmöglich machen. Am besten verschlüsselst du direkt in eine Datei.
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 01.05.09 02:36
JayEff hat folgendes geschrieben : | | Ein weiteres Problem bei der xor-Verschlüsselung: Es können bei der Berechnung Steuerzeichen herauskommen die die Anzeige in einem Edit oder Memo unmöglich machen. Am besten verschlüsselst du direkt in eine Datei. |
Dazu gibt es hier eine Lösung, man kann das ganze ja noch weiterverarbeiten:
www.delphipraxis.net/topic30831.html
|
|
mlhk 
      
Beiträge: 30
|
Verfasst: Fr 01.05.09 13:35
ja das hab ich mir auch schon mal angeschaut aber mein code muss doch auch funktionieren, ich will den halt später noch ausbauen mit nem spezielle konzept un da muss ich das mit den memofeldern vorfallemhinbekommen und wenn noh nicht mal das mit editfelder fuktioniert, aber nun gut ich bräucht halt wirklich noch ne lösng die memofelder
--- Moderiert von Narses: Beiträge zusammengefasst---
ah gut danke, der code geht jetzt sehr gut
|
|
mlhk 
      
Beiträge: 30
|
Verfasst: Sa 02.05.09 16:54
also soweit bi ich jetzt: xor funktioniert aber liefert mir komische zeichen, ich hab jetzt noch eingebau das er nicht nur einen buchstaben sondern ein ganzes wort als schlüssel verwende kann:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| function a(text: Char;key:string): char; begin Result := Char(Ord(text) xor Ord(key)); end;
procedure TForm2.Button1Click(Sender: TObject); var V, text: string; key: string; i,j: integer; begin memo1.Clear; text := memo2.text; key := edit3.text; V := ''; for i := 0 to Length(text) do begin for j := 0 to length(key) do begin V := V+ a(text[i], key[j]); Application.ProcessMessages; ProgressBar1.Position := i+j; ProgressBar1.Update; memo1.Text := V; end; end; end; | zudem habe ich noch eine progressbar eingebaut,die im moment zwar auch funktioniert sich aber nicht vollkommen läd
mfg
max
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Sa 02.05.09 17:55
mlhk hat folgendes geschrieben : | | also soweit bi ich jetzt: xor funktioniert aber liefert mir komische zeichen, ich hab jetzt noch eingebau das er nicht nur einen buchstaben sondern ein ganzes wort als schlüssel verwende kann: |
Der Code funktioniert so nicht. Dass xor dir "komische Zeichen" liefert ist ja wohl ganz normal  ist ja eine Verschlüsselung. Ausserdem:
jaenicke hat folgendes geschrieben : | JayEff hat folgendes geschrieben : | | Ein weiteres Problem bei der xor-Verschlüsselung: Es können bei der Berechnung Steuerzeichen herauskommen die die Anzeige in einem Edit oder Memo unmöglich machen. Am besten verschlüsselst du direkt in eine Datei. | Dazu gibt es hier eine Lösung, man kann das ganze ja noch weiterverarbeiten:
www.delphipraxis.net/topic30831.html |
Ich hab in einem anderen Topic geschrieben, wie man ein Wort als Schlüssel verwenden kann, ich kopiers mal hier rein:
JayEff hat folgendes geschrieben : | Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| function crypt(Klartext, Schluessel: Char): Char; begin Result := Char(Ord(Klartext) xor Ord(Schluessel)); end;
var Mapdatei: String; Key: String; i, KeyLength : Integer; begin Key := 'MeinGeheimerSchlüssel'; KeyLength := Length(Key); for i := 1 to Length(Mapdatei) do Mapdatei[i] := crypt(Mapdatei[i], Key[(i mod Keylength) + 1]); |
Zur Erklärung: der Modulo Operator teilt durch KeyLength und gibt den Rest der Teilung zurück, wenn dieser kleiner ist als Keylength. An sonsten teilt er nochmal. Aus 5 mod 3 wird also 2, 100 mod 20 = 0, etc. In unserem Fall nutze ich mod um dafür zu sorgen, dass er nicht versucht, über den rechten oder linken Rand von Key hinaus zugehen. i mod KeyLength sollte Werte zwischen 0 und KeyLength - 1 ausgeben. Darum addiere ich noch eine 1 drauf. Nun verschlüsselt der Algorithmus ganz nach dem Vigenère Schema:
Quelltext 1: 2: 3:
| Schlüssel: blablablabl Klartext : huhu *freu* Code : wasauchimme |
(Nein, unter Code steht NICHTS was ich ernsthaft verschlüsselt hab Da war ich zu faul.) |
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
mlhk 
      
Beiträge: 30
|
Verfasst: Sa 02.05.09 22:25
also nochmal zu komische zeichen, mir ist schon klar das bei der ausgabe dann nicht das gleiche steht wie bei der eingabe aber das Quelltext 1:
| 「㋜⿴㋜⾦⾎㊦⾦⾎㊦⾩⾁㊩⾩⾁㊩⿔㋼⿔㋼⾪⾂㊪⾪⾂㊪⾹⾑㊹⾹⾑㊹⾮⾆㊮⾮⾆㊮⾯⾇㊯⾯⾇㊯⾿⾗㊿⾿⾗㊿⾴⾜㊴⾴⾜㊴⾰⾘㊰⾰⾘㊰⼠⼈㈠⼠⼈㈠⾯⾇㊯⾯⾇㊯⾯⾇㊯⾯⾇㊯⾹⾑㊹⾹⾑㊹⾰⾘㊰⾰⾘㊰⾲⾚㊲⾲⾚㊲⾸⾐㊸⾸⾐㊸⾹⾑㊹⾹⾑㊹⾮⾆㊮⾮⾆㊮⿔㋼⿔㋼⾈⾠㊈⾈⾠㊈⾹⾑㊹⾹⾑㊹⾤⾌㊤⾤⾌㊤⾨⾀㊨⾨⾀㊨⿔㋼⿔㋼⿑⿹㋑⿑⿹㋑㋖㋖ | ist halt irgendwie shcon komisch zudem wenn ich erneut auf start klicke ändert sich dieseausgabe, bis sie nach dreimaligem klicken wieder hier ankommt
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| ich hab mich jetzt nochmal bemüht meinen code etwas zu strukturieren function xorfunktion (text: Char;key:string): char; begin Result := Char(Ord(text) xor Ord(key)); end;
procedure TForm2.Button1Click(Sender: TObject); var V, text: string; key: string; i,j: integer; begin memo1.Clear; text := memo2.text; key := edit3.text; V := ''; for i := 0 to Length(text) do begin for j := 0 to length(key) do begin V := V+ xorfunktion (text[i], key[j]); Application.ProcessMessages; ProgressBar1.Position := i+j; ProgressBar1.Update; memo1.Text := V; end; end; end; |
und ordentliche funktionisnamen zu vergeben
mir stellt sich halt immer noch das problem mit der progressbar die füllt sich immer nur bis zur hälfte und vorallem das problem mit ord und char weil das ja mit string nicht geht als am liebsten würd ich ja ein memo benutzten aber mir stellt sich halt immer das problem mit edit3.text was ja eigendlich nicht funktioniert
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Sa 02.05.09 22:28
Du hast nur eine einzige Zeile meines Posts durchgelesen, oder?  Ließ ihn mal ganz, vorallem die Stelle, an der ich dir korrekten Code zum Verschlüsseln schon fast Copy-Paste bereit liefere.
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
mlhk 
      
Beiträge: 30
|
Verfasst: Sa 02.05.09 22:40
naja als soweit ich das sehe hast du das rekursiv gemacht, das habe ich nicht und hab eich ach eigendlich nicht vor undirgendwie scheint mir als würdest d meine postsnicht ganz durchlesen denn also das von wegen progressbar und memo problem stellt sich bei ganz anders als bei dir
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 02.05.09 22:46
|
|
|