AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Text in Dualzahlen umwandeln

Ein Thema von countdown · begonnen am 23. Mär 2010 · letzter Beitrag vom 24. Mär 2010
Antwort Antwort
Seite 3 von 3     123   
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#21

Re: Text in Dualzahlen umwandeln

  Alt 24. Mär 2010, 13:37
Zitat von countdown:
alles klar hat sich erledigt, ich habe den fehler selber gefunden
danke nochmals an alle helfer
Und was war nu der Fehler?
  Mit Zitat antworten Zitat
countdown

Registriert seit: 23. Mär 2010
10 Beiträge
 
#22

Re: Text in Dualzahlen umwandeln

  Alt 24. Mär 2010, 13:53
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
  Mit Zitat antworten Zitat
countdown

Registriert seit: 23. Mär 2010
10 Beiträge
 
#23

Re: Text in Dualzahlen umwandeln

  Alt 24. Mär 2010, 15:10
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:
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;
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?
  Mit Zitat antworten Zitat
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#24

Re: Text in Dualzahlen umwandeln

  Alt 24. Mär 2010, 15:26
Naja, im einfachsten Fall probier es doch mal so:

(IntToStr( StrToInt(text[b]) + StrToInt(schluessel[b]))) 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.

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:
verschlüsselter Text: 974159
Ich nehme an, du willst das auch irgendwann mal entschlüsseln, oder?

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...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#25

Re: Text in Dualzahlen umwandeln

  Alt 24. Mär 2010, 15:29
Zitat von guidok:
Naja, im einfachsten Fall probier es doch mal so:

(IntToStr( StrToInt(text[b]) + StrToInt(schluessel[b])))
Dazu darf der Schlüssel aber nicht kürzer als der Text sein, das muss man abfangen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von runningsoft
runningsoft

Registriert seit: 8. Okt 2004
Ort: Bernau
108 Beiträge
 
Delphi 10.4 Sydney
 
#26

Re: Text in Dualzahlen umwandeln

  Alt 24. Mär 2010, 15:37
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;
Steffen
  Mit Zitat antworten Zitat
countdown

Registriert seit: 23. Mär 2010
10 Beiträge
 
#27

Re: Text in Dualzahlen umwandeln

  Alt 24. Mär 2010, 15:57
@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
natürlich möchte ich das auch irgendwann wieder entschlüsseln aber ich verstehe das Problem das du ansprichst leider nicht..
  Mit Zitat antworten Zitat
countdown

Registriert seit: 23. Mär 2010
10 Beiträge
 
#28

Re: Text in Dualzahlen umwandeln

  Alt 24. Mär 2010, 16:15
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:
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;
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?
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#29

Re: Text in Dualzahlen umwandeln

  Alt 24. Mär 2010, 16:17
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.
Result:=' '; dann werden alle Bits von "oben" nach "unten" (most signigficant/least significant ?)
in den String übertragen:
Delphi-Quellcode:
  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)];
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).
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:
const
  bina:array [0..1] of char=('0','1');
Ich hoffe das ist verständlich
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#30

Re: Text in Dualzahlen umwandeln

  Alt 24. Mär 2010, 16:48
Zitat von countdown:
Deshalb habe ich nun eine if-schleife eingebaut
If-Schleife
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz