![]() |
Delphi Facharbeit
Hallo,
ich schreibe in der Schule eine Facharbeit im Fach Informatik, jedoch habe ich ein Problem bei dem ich von alleine nicht auf die Lösung komme. Es geht sich um die Cäsar-Verschlüsselung die soweit auch ohne Probleme geht. Ich will jedoch die Eingabe von dem Edit-Feld nur auf zahlen beschränken. Hierbei ist mein Problem dass ich dies in eine if verschachtelung(sofern man es so nennen kann) einbauen muss und keine Ahnung haben wie. Ich würde mich über schnelle Hilfe sehr freuen. Hier also noch der Quelltext in den ich diese Überprüfung eingebunden haben will.
Delphi-Quellcode:
procedure TForm1.btsatztverschluesselnClick(Sender: TObject);
var i, k, v: integer; begin if length (edeingabe.text)=0 then begin showmessage('Es ist kein Satz zum verschlüsseln vorhanden!') end else begin v:= StrToIntdef(edverschiebung.Text,5); edausgabe.clear; for i := 1 to Length(edeingabe.Text) do begin k:= Ord(edeingabe.Text[i]); k := k + v; edausgabe.Text := edausgabe.Text + chr(k); end; end; end; |
Re: Delphi Facharbeit
|
Re: Delphi Facharbeit
Zitat:
Zitat:
Delphi-Quellcode:
procedure TForm1.eSchluesselKeyPress(Sender: TObject; var Key: Word);
begin if NOT (Key in [#8, '0'..'9', ',']) then Key := #0; end; Zitat:
Bernhard |
Re: Delphi Facharbeit
Zitat:
|
Re: Delphi Facharbeit
Also zuersteinmal danke für die schnellen antworten ;)
die forensuche hätte ich gründlicher nutzen können das ist richtig.entschuldigung. Um auf die eigeninitiative zu sprechen zu kommen: Ich habe etwas ausprobiert jedoch hat er dann immer zwei fehler angezeigt und ich habe mir gedacht ich kann besser von 0 anfangen : hier mein versuch:
Delphi-Quellcode:
procedure TForm1.btsatztverschluesselnClick(Sender: TObject);
var i, k, s, v: integer; begin if length (edeingabe.text)=0 then begin showmessage('Es ist kein Satz zum verschlüsseln vorhanden!') end else begin for s:=1 to length(edverschiebung) do begin if Pos(edverschiebung[s],eingabemoeglichkeit)>0 then begin v:= StrToIntdef(edverschiebung.Text,5); edausgabe.clear; end; for i := 1 to Length(edeingabe.Text) do begin k:= Ord(edeingabe.Text[i]); k := k + v; edausgabe.Text := edausgabe.Text + chr(k); end; end; end; end; |
Re: Delphi Facharbeit
Zitat:
|
Re: Delphi Facharbeit
ja da liegt mein probelm =P
Delphi sagt mir:-klasse besitzt keine standarteigenschaft -typ unkompatibel hat jemand eine ahnung warum ? |
Re: Delphi Facharbeit
Zitat:
Wo sagt Delphi das? Zeigt Delphi eine Zeilen-Nummer mit an? Wir sind Programmierer, keine Hellseher! |
Re: Delphi Facharbeit
Und jetzt bitte noch den zweiten Teil der Fehlerbeschreibung: Wo? In welcher Zeile tritt der Fehler auf? Wir sind hier keine Hellseher.
|
Re: Delphi Facharbeit
@Sir Rufo & Luckie: Habt ihr euch bzgl Hellseher abgesprochen?! :mrgreen:
Btw: Ab Delphi 2010 ist NumbersOnly ein Feature eines Edit-Feldes! |
Re: Delphi Facharbeit
Nun, die Angabe "edVerschiebung" ist sicherlich zu wenig. Das ist vermutlich ein TEdit, du musst schon genau angeben welche Eigenschaft des TEdit du in diesem Fall verwenden willst >> deshalb funktioniert es mit edVerschiebung.Text
|
Re: Delphi Facharbeit
@hanki: ich glaub auch, du solltest dir über das eigentliche Problem erst mal Gedanken machen und genau sagen, was du willst. Denn es ist ein Unterschied, ob du dem User verbieten willst, in das Edit-Feld Zahlen einzutragen, oder ob du das Edit-Feld nur auf vorhandensein von "Nicht-Zahlen" prüfen willst.
|
Re: Delphi Facharbeit
außerdem finde ich es angebracht, dass man Variablen entsprechend ihrer Bedeutung benahmt. Du hast jetzt hier 4 Zählvariabnel. Als ich vor etwa 3 Monaten eine Caesar-Verschlüsselung im Unterricht erstellen sollte, kam ich mit einer einzigen zurecht. KLeiner Tipp dafür: Schau dir mal den Quellcode von UpperCase an. Da braucht man nur 1 Zeile zu verändern und den Schlüssel einzulesen (inkl. aller anderen benötigten Strings) und dann ist die fertig.
Bernhard |
Re: Delphi Facharbeit
Delphi-Quellcode:
Was ich bewerkstelligen möchte ist,dass der Benutzer nur zahlenwerte eingeben kann,das sonst eine verschlüsselung nur mit dem Verschiebungswert 5 erreicht wird:
procedure TForm1.btsatztverschluesselnClick(Sender: TObject);
var i, k, s, v: integer; begin if length (edeingabe.text)=0 then begin showmessage('Es ist kein Satz zum verschlüsseln vorhanden!') end else begin for s:=1 to length(edverschiebung) do begin if Pos(edverschiebung[color=#ff0000][s][/color],eingabemoeglichkeit)>0 then begin v:= StrToIntdef(edverschiebung.Text,5); edausgabe.clear; end; for i := 1 to Length(edeingabe.Text) do begin k:= Ord(edeingabe.Text[i]); k := k + v; edausgabe.Text := edausgabe.Text + chr(k); end; end; end; end;
Delphi-Quellcode:
v:= StrToIntdef(edverschiebung.Text,5);
|
Re: Delphi Facharbeit
wie in #11 schon gesagt: Es fehlt ein .Text
Bernhard |
Re: Delphi Facharbeit
Delphi-Quellcode:
habe nun das .text hinzugefügt und es klappt auch.
procedure TForm1.btsatztverschluesselnClick(Sender: TObject);
var i, k, s, v: integer; begin if length (edeingabe.text)=0 then begin showmessage('Es ist kein Satz zum verschlüsseln vorhanden!') end else begin for s:=1 to length(edverschiebung) do begin if Pos(edverschiebung[s],eingabemoeglichkeit)>0 then begin v:= StrToIntdef(edverschiebung.Text,5); edausgabe.clear; end; for i := 1 to Length(edeingabe.Text) do begin k:= Ord(edeingabe.Text[i]); k := k + v; edausgabe.Text := edausgabe.Text + chr(k); end; end; end; end; danke schonmal, jedoch besteht nun noch das problem, dass mein text zu oft verschlüsselt wird. werde aber noch drübergucken. DANKE an alle ;) wer noch ideen hat, ich bin immer dankbar =P |
Re: Delphi Facharbeit
Dankbar und so ein Smiley ( -> =P) passen einfach nicht zusammen :zwinker:
Wieso nimmst du dieses StrToIntDef()? Klar, kann das Sinn machen, aber der User bekommt ja nicht mal mit, wenn du intern mit 5 rechnest! Verbiete entweder komplett die Eingabe von anderen Zeichen außer 0-9, oder baue eine Abfrage ein, sodass der User eine Warnmeldung bekommt, wenn er etwas anderes eingebaut hat, als Zahlen. Das kannst du mit der Val()-Methode (siehe Hilfe, da steht ausreichend über deren Verwendung drin) lösen. Somit kommst du erst gar nicht in die Situation, dass ein Wert genommen wir, den der User gar nicht eingegeben hat, was auch der einzig richtige wäre! |
Re: Delphi Facharbeit
was heißt: "zu oft verschlüsselt"??
und deine Prüfmethode ob nur erlaubte Zeichen in dem Eingabefeld stehen ist der letzte Müll. Es muss nur 1 Zeichen drin sein und schon meint die, es wären nur gültige Zeichen drin. Meint sie, es wären nur ungültige Zeichen drin, dann kommt irgendwas zufälliges raus, weil v nicht initialisiert ist. Mach doch ne eigene Funktion mit booleschem Rückgabewert, die prüft, ob ein String nur gültige Zeichen enthällt. z.B.:
Delphi-Quellcode:
Bernhard
function GueltigerString(Eingabe, GueligeZeichen: String): boolean; // (c) by Bernhard Wendel (wenn, dann alles übernehmen)
var i: Integer; begin Result := true; for i := 1 to Length(Eingabe) do begin if Pos(Eingabe[i], GueltigeZeichen) = -1 then begin Result := false; Exit; end; end; end; |
Re: Delphi Facharbeit
Dass es der letzt Müll ist weiß ich auch selber.
Deswegen schreibe ich ja in dieses Forum, damit ich lerne es demnächst besser zu machen. Also danke für die Hilfe ;) sind zwar noch kleine Probleme aber die löse ich selber. danke. MFG Tim |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:49 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-2025 by Thomas Breitkreuz