Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Strings subtrahieren?
Florens - Mo 01.11.10 21:16
Titel: Strings subtrahieren?
Hi all,
Ich schätz mal ein paar haben gestern mein RSA projekt schon kennengelernt. Jetzt gehts aber nciht mehr ums chiffrieren sondern dechiffrieren. Dazu will ich Zahlen einlesen die ja aber unterschiedlich lange Strings sein können. Vorerst sieht mein Quellcode wie folgt aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| procedure TForm1.ZahlenzuBuchstabenClick(Sender: TObject);
var a,x,i,st:Integer; S: String;
begin x:=length(Zahl.Text);
for i:=1 to x do begin S:=S+Zahl.Text[i];
if Zahl.Text[i]=' ' then begin S:=S-Zahl.Text[i]; st:=StrToInt(S); Buch.Text:=Buch.Text+ chr(st)+' '; S:=''; end
end
end; |
Die Zahlen gibt er in meinem Kontrollmemo immer mit einem Leerzeichen aus. So habe ich mir gedacht subtrahier ich dieses einfach weg nur wie....
Danke um jede hilfe
Euer Flo
jaenicke - Mo 01.11.10 21:22
Schau dir mal Delete an. ;-)
Florens - Mo 01.11.10 21:24
jaenicke hat folgendes geschrieben : |
| Schau dir mal Delete an. ;-) |
? Danke für die Antowort nur wie bringe ich delete hier rein. Habe bisher nicht viel mit Strings rumprobiert...
Florens - Mo 01.11.10 21:35
Sooo jetzt bin ich schonmal soweit(sry für meine Googlefaulheit finds nur immer besser verständlich wenn mir das jemand erklärt der das vorrangehende Problem kennt):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.ZahlenzuBuchstabenClick(Sender: TObject);
var a,x,i,st:Integer; S: String;
begin x:=length(Zahl.Text);
for i:=1 to x do begin S:=S+Zahl.Text[i];
if Zahl.Text[i]=' ' then begin a:=length(S); Delete(S,a); st:=StrToInt(S); Buch.Text:=Buch.Text+ chr(st)+' '; S:=''; end
end
end; |
jaenicke - Mo 01.11.10 21:42
Gleich der erste Link führt doch zu einer Beschreibung. Und da stehen drei Parameter. Da du nur zwei angegeben hast, ist es irgendwie logisch, dass Delphi sagt, dass da einer fehlt, oder?
Außerdem zeigt das dir Delphi doch auch selbst an...
Da siehst du drei Parameter.
Florens - Mo 01.11.10 21:46
jaenicke hat folgendes geschrieben : |
Gleich der erste Link führt doch zu einer Beschreibung. Und da stehen drei Parameter. Da du nur zwei angegeben hast, ist es irgendwie logisch, dass Delphi sagt, dass da einer fehlt, oder?
Außerdem zeigt das dir Delphi doch auch selbst an...
Da siehst du drei Parameter. |
Ja ich meinte ja auch, dass ich den mittleren Parameter nicht verstehe und deswegen gehofft hatte, dass es mit 2en auch geht, was es aber offensichtlich nicht tut. Selbst auf dem Bild check ich nicht was mit Index gemeint ist. (Btw: ich hab den ersten Link angeklickt und da stand dann delete(string,5,maxInt). WIeso zur Hölle 5?)
Edit: Habs jetzt auch mit delete(S,a-1,a) probiert womit der aber gleich die letzten beiden Zeilen löscht...
jaenicke - Mo 01.11.10 21:57
Florens hat folgendes geschrieben : |
| Edit: Habs jetzt auch mit delete(S,a-1,a) probiert womit der aber gleich die letzten beiden Zeilen löscht... |
Quelltext
1: 2: 3: 4: 5:
| abcdefghijkl Length: ^
abcdefghijkl Length - 1: ^ |
Und da du ab dieser Position a Zeichen löschst, sind dann die letzten beiden Zeichen weg. (Dass a zu hoch ist für die Länge des zu löschenden Bereichs, ist egal.)
Florens - Mo 01.11.10 21:57
close pls. klappt so jetzt wunderbar:
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:
| procedure TForm1.ZahlenzuBuchstabenClick(Sender: TObject);
var a,x,i,st:Integer; S: String;
begin x:=length(Zahl.Text); Memo1.Lines.Add('length='+IntToStr(x));
for i:=1 to x do begin S:=S+Zahl.Text[i];
if Zahl.Text[i]=' ' then begin a:=length(S); Delete(S,a,a); Memo1.Lines.Add('S='+S); st:=StrToInt(S); Memo1.Lines.Add('st='+IntToStr(st)); Buch.Text:=Buch.Text + chr(st); S:=''; end
end
end; |
jaenicke - Mo 01.11.10 21:59
Hier werden Threads nicht einfach geschlossen, nur weil sie gelöst sind. ;-)
Und nebenbei:
Das genügt auch. Schließlich willst du ja
ein Zeichen ab Position
a löschen. ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!