![]() |
Re: Text in Dualzahlen umwandeln
Zitat:
|
Re: Text in Dualzahlen umwandeln
war eigentlich ein dummer fehler..
ich hatte ztext seinen String aus dem Editfeld schon bei Formactivate zugewiesen und nicht erst bei der buttonclick procedure..dadurch wurde das, was zu Begin im EditFeld steht( bei mir war es "zu verschlüsselnder text") in Dezimale umgewandelt, was natürlich auch die 50-60 stellige Zahl erklärt :wink: |
Re: Text in Dualzahlen umwandeln
ich habe schon wieder ein neues Problem...
ich habe ja schon geschrieben, dass ich ein Verschlüsselungsverfahren nachstellen möchte. Nun habe ich es also geschafft einen Text aus einem Editfeld und einen Schlüssel aus einem Editfeld in ascii-Werte zu verwandeln und diese jeweils in einem Label auszugeben. Der nächste Schritt der folgen sollte und bei dem ich Probleme habe ist folgender: Ich möchte nun die erste Zahl des Textes mit der ersten Zahl des Schlüssels addieren, die zweite zahl mit der Zweiten, usw...Dabei soll der Schlüssel sich wiederholen wenn der Text länger ist als der Schlüssel..aber gehen wir zuerst von gleichlangen Text und Schlüssel aus. Beispiel: Text: 103104 Schlüssel: 871055 verschlüsselter Text: 974159 ich habe auch wieder einen Versuch gestartet aber habe keine ahnung ob das ein richtiger ansatz ist:
Delphi-Quellcode:
er zeigt mir immer eine Fehlermeldung an, dass bei text[b] und schluessel[b] ein array-typ erforderlich ist...ich hab aber keine ahnung was das ist..kann mir also jemand sagen ob das was ich da gemacht hab richtig ist und wenn ja wie das mit dem array-typ ist und wie man den da einbaut?
procedure TForm1.Button2Click(Sender: TObject);
Var schluessel,text,b:integer; begin text:= strtoint(Label1.caption); //in Label1.caption steht der in zahlen umgewandelte Text schluessel:= strtoint(Label2.caption);// in label2.caption steht der in zahlen umgewandelte schlüssel for b:=1 to length(Label1.caption) do begin Label3.caption:= Label3.caption + (inttostr( text[b] + schluessel[b])); // in label3.caption soll der verschlüsselte Text // ausgegeben werden end; end; end; |
Re: Text in Dualzahlen umwandeln
Naja, im einfachsten Fall probier es doch mal so:
Delphi-Quellcode:
Für den Schlüssel musst du dann natürlich eine separate Indexvariable nehmen, die von 1 bis Length(Schluessel) - 1 gezählt wird und dann wieder bei 1 beginnt.
(IntToStr( StrToInt(text[b]) + StrToInt(schluessel[b])))
Ein kleiner Tip noch: Überleg dir bevor du programmierst erst mal auf einem Blatt Papier was du machen willst und wie es funktionieren könnte. Ein Problem, über das du evtl. noch stolpern wirst, wird vielleicht folgendes: Zitat:
Wie stelltst du jetzt fest, was die codierte Repräsentation des ersten Zeichens deines Klartextes ist? Das Ergebnis deiner Addition muss ja nicht zwangsweise zweistellig sein... |
Re: Text in Dualzahlen umwandeln
Zitat:
|
Re: Text in Dualzahlen umwandeln
Hallo,
Du wandelst jetzt den Text aus Label1 und Label2 in Integerzahlen um (also der String '10324' wird zu 10324). Da kannst Du natürlich nicht mit der von Dir verwendeten Methode die beiden ersten zahlen addieren, dann die zweiten usw. Dazu müsstest Du die Variablen Text und Schlüssel als Strings definieren. Folgender Code sollte funktionieren (ungetestet, hab grad kein Delphi zur Hand):
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
Var b:integer; schluessel,text : string; begin text:= Label1.caption; //in Label1.caption steht der in zahlen umgewandelte Text schluessel:= Label2.caption;// in label2.caption steht der in zahlen umgewandelte schlüssel for b:=1 to length(Label1.caption) do begin Label3.caption:= Label3.caption + (inttostr(strtoint(text[b]) + strtoint(schluessel[b]))); // in label3.caption soll der verschlüsselte Text // ausgegeben werden end; end; end; |
Re: Text in Dualzahlen umwandeln
@runningsoft und alle andern:danke für die hilfe es funktioniert:)
@guidok: den tip mit dem Blatt kenn ich schon und wende ihn auch nach bestem gewissen an :wink: natürlich möchte ich das auch irgendwann wieder entschlüsseln aber ich verstehe das Problem das du ansprichst leider nicht.. |
Re: Text in Dualzahlen umwandeln
ich habe aber jetzt erstmal ein anderes Problem gelöst:
wenn ich das berücksichtig habe was ihr mir geraten habt war die Summe der Zahlen immer länger als der text bzw der schlüssel, da 9+5= 14 und dann auch 14 ausgegeben wurde. Deshalb habe ich nun eine if-schleife eingebaut die verhindert dass zahlen >9 ausgegeben werden.wenn eine Zahl größer 9 ist wird sie minus 10 gerechnet und dann ausgegeben:
Delphi-Quellcode:
für die entschlüsselung wird dann der verschlüsselte text minus den schlüssel genommen und sollte das ergebnis dann <0 sein wird +10 gerechnet so dürfte ich doch dann wieder auf meinen ausgangstext kommen oder?
procedure TForm1.Button2Click(Sender: TObject);
Var schluessel,text:string; b,zwischenwert:integer; begin text:= Label1.caption; schluessel:=Label2.caption; for b:=1 to length(Label1.caption) do begin zwischenwert:= ( StrToInt(text[b]) + StrToInt(schluessel[b])); if zwischenwert > 9 then zwischenwert:= zwischenwert -10; label3.caption:= label3.caption + inttostr(zwischenwert); end; end; |
Re: Text in Dualzahlen umwandeln
Ist doch relativ einfach:
Wenn Du ein Zeichen (Byte) binär darstellen willst, bekommst Du einen String der 8 Zeichen Lang ist. also so etwas 01010100.
Delphi-Quellcode:
dann werden alle Bits von "oben" nach "unten" (most signigficant/least significant ?)
Result:=' ';
in den String übertragen:
Delphi-Quellcode:
mit shr schiebst Du das zu verwertende Bit an die letzte Stelle und maskierst es mit $01.Wobei das $01 sicher stellt, daß immer 0 oder 1 als Ergebnis heraus kommt (eben das aktuell letzte Bit).
result[1]:=bina[(inbyte shr 7) and $01];
result[2]:=bina[(inbyte shr 6) and $01]; result[3]:=bina[(inbyte shr 5) and $01]; result[4]:=bina[(inbyte shr 4) and $01]; result[5]:=bina[(inbyte shr 3) and $01]; result[6]:=bina[(inbyte shr 2) and $01]; result[7]:=bina[(inbyte shr 1) and $01]; result[8]:=bina[(inbyte and $01)]; Und das nimmst Du als Index für ein Array (bina), das nur 0 und 1 enthält. So wird der Zahlenwert 0 als Ziffer 0 dargestellt und der Wert 1 als 1.
Delphi-Quellcode:
Ich hoffe das ist verständlich
const
bina:array [0..1] of char=('0','1'); K-H |
Re: Text in Dualzahlen umwandeln
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz