![]() |
Re: Zahlen symmetrisch
also hab mir eure beispiele ma angesehen und hab mir dann was eigenes ueberlegt.
habs erst damit probiert:
Delphi-Quellcode:
(also das man 5 verschiedene Zahlen schreiben kann)
procedure TForm1.Button1Click(Sender: TObject);
var eins, zwei, drei, vier, fuenf: Integer; begin eins:=StrToInt(edit1.text); zwei:=StrToInt(edit2.text); drei:=StrToInt(edit3.text); vier:=StrToInt(edit4.Text); fuenf:=StrToInt(edit5.Text); If eins + zwei = vier + fuenf then begin Label3.Visible:=StrToBool('False'); Label2.Visible:=StrToBool('True'); end else begin Label2.Visible:=StrToBool('False'); Label3.Visible:=StrToBool('True'); end; end; so wenn ich dann auf den button clicke ist zb. 12321 = symmetrisch und 12231 = nicht symmetrisch allerdings hab ich dann bemerkt das es auch einen kleine fehler gib.t da es ja den wert des 1. felds mit dem 2. zusammen rechnet und mit der summe des 4. + 5. felds vergleicht. so würde das programm also ausgeben das, zb. 12312 = symmetrisch ist. also bin ich nochmal dran gegangen und hab einen anderen weg gesucht, in diesem fall is mir dann eine ganz einfache lösung eingefallen und wollte fragen ob man das so machen kann oder ob es da auch sowas wie einen "Bug" gibt.
Delphi-Quellcode:
hier wird vergliechen ob
procedure TForm1.Button1Click(Sender: TObject);
var eins, zwei, drei, vier, fuenf: Integer; begin eins:=StrToInt(edit1.text); zwei:=StrToInt(edit2.text); drei:=StrToInt(edit3.text); vier:=StrToInt(edit4.Text); fuenf:=StrToInt(edit5.Text); If (eins = fuenf) and (zwei = vier) then begin Label3.Visible:=StrToBool('False'); Label2.Visible:=StrToBool('True'); end else begin Label2.Visible:=StrToBool('False'); Label3.Visible:=StrToBool('True'); end; end; edit1.text = edit5.text ist und ob edit2.text = edit4.text ist richtig so? (noch nebenbei, klingt jetzt wahrschienlich etwas dumm oder so, aber ich hab des immer noch nicht kapiert wie ich eine function einbauen kann, kann mir jemand helfen, bzw. zeigen oder einen link zu einem tut geben?) |
Re: Zahlen symmetrisch
Der 2. Ansatz ist auf jeden Fall richtiger, wenn auch umständlich gelöst. Versuch es mal so:
Delphi-Quellcode:
Und zum Einsetzen von Funktionen solltest Du Dir die Einsteiger-Tutorials in diesem und anderen Foren mal ansehen. Ein kleines Beispiel:
procedure TForm1.Button1Click(Sender: TObject);
var eins, zwei, drei, vier, fuenf: Integer; begin //Du solltest hier auf jeden Fall eine Fehlerbehandlung einbauen eins:=StrToInt(edit1.text); zwei:=StrToInt(edit2.text); drei:=StrToInt(edit3.text); vier:=StrToInt(edit4.Text); fuenf:=StrToInt(edit5.Text); //sprechende Bezeichner wären auch nicht schlecht ;) Label2.Visible := (eins = fuenf) and (zwei = vier); Label3.Visible := not Label2.Visible; { If (eins = fuenf) and (zwei = vier) then begin Label3.Visible:=StrToBool('False'); Label2.Visible:=StrToBool('True'); end else begin Label2.Visible:=StrToBool('False'); Label3.Visible:=StrToBool('True'); end;} end;
Delphi-Quellcode:
function IsSymmetricNumber(const i: Cardinal): Boolean;
begin Result := IntToStr(i) = ReverseString(IntToStr(i)); end; procedure TForm1.Button1Click(Sender: TObject); var eins, zwei, drei, vier, fuenf: Integer; begin //Du solltest hier auf jeden Fall eine Fehlerbehandlung einbauen eins:=StrToInt(edit1.text) * 10000; zwei:=StrToInt(edit2.text) * 1000; drei:=StrToInt(edit3.text) * 100; vier:=StrToInt(edit4.Text) * 10; fuenf:=StrToInt(edit5.Text); if IsSymmetricNumber(eins + zwei + drei + vier + fuenf) then ShowMessage('Palindrom') else ShowMessage('Kein Palindrom'); end; |
Re: Zahlen symmetrisch
Zitat:
und zu dem was du veraendert hast soll alles soviel heisen wie(kommt unten drunter).... wenn ich das richtig verstanden habe. // Fehlerbehandlung damit meinst du einfach eine fehlerbehandlung xP, weis nicht genau was aber ich würde einfach vermuten wenn zb. edit1.text = nix ist, also einfach nur leer (ich habe bei jedem edit feld im "OnKeyPress" eine procedure eingefügt das man nur zahlen reinschreiben kann.) bzw. zu dem hier werd ich noch sehen, da mir momentan grad dazu nichts einfällt. ab // sprechende Bezeichner wären..... wird das wohl so erklärt: Label2 ist nur visible (sichtbar) wenn eins = fuenf (der wert im editfeld) und zwei = vier ist. und Label3 ist nur visible (sichtbar) wenn label2 nciht sichtbar ist. hoffe das ich das dann richtig verstanden hab. allerdings muss ich sagen momentan find ich das auf meine methode noch einfacher ^^ naja liegt wohl daran das ich das kann und noch net sooo weit gedacht hab ^^ |
Re: Zahlen symmetrisch
Lass mal ein Edit leer und drück den Button, dann weißt Du, was ich mit Fehlerbehandlung meinte. Und mit sprechenden Bezeichnern meine ich, statt Label22 einen Namen wie lblVorname (nur als Beispiel) zu wählen, dann kann man evtl. auch ohne das Formular zu kennen auf den Sinn schließen ;)
|
Re: Zahlen symmetrisch
ja des mit edit leer lassen kommt halt mit dem problem
" is not a valid integer value. muss ich halt noch gucken das dann entweder nichts kommt oder eine andere error nachricht. bzw. habs so probiert funktioniert allerdings net, :wall:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var eins, zwei, drei, vier, fuenf: Integer; begin eins:=StrToInt(edit1.text); zwei:=StrToInt(edit2.text); drei:=StrToInt(edit3.text); vier:=StrToInt(edit4.Text); fuenf:=StrToInt(edit5.Text); // Das hier sollte die Fehlerbehandlung sein If (eins or zwei or drei or vier or fuenf =$22) then Showmessage('Bitte fülle alle Felder aus!') // ende der Fehlerbehandlung else If (eins = fuenf) and (zwei = vier) then begin Label3.Visible:=StrToBool('False'); Label2.Visible:=StrToBool('True'); end else begin Label2.Visible:=StrToBool('False'); Label3.Visible:=StrToBool('True'); end; end; |
Re: Zahlen symmetrisch
Schau Dir mal TryStrToInt an.
|
Re: Zahlen symmetrisch
Oder
![]() |
Re: Zahlen symmetrisch
Dann weißt Du aber nicht, ob die Zahl eingegeben wurde oder nicht ;)
|
Re: Zahlen symmetrisch
versuchs mal so:
Delphi-Quellcode:
uses
StrUtils; // Uses ergänzen function IsSymmetricNumber(const s: String): Boolean; begin Result := s = ReverseString(s); end; procedure TForm1.Button1Click(Sender: TObject); var Temp: Integer; // Dummyvariable s: String; begin s := edit1.text + edit2.text + edit3.text + edit4.text; // wenn du das ganze mit nur einem edit machen willst dann // s := edit1.text; if TryStrToInt(s, Temp) then // wenn in s eine zahl drinnsteht... begin Label2.Visible := IsSymmetricNumber(s); Label3.Visible := not Label2.Visible; end; end; |
Re: Zahlen symmetrisch
ok thx für die hilfe.
hab es jetzt auch geschaft bei mir im code einen fehler error einzubauen falls nicht alle editfelder *edit* meine ausgefüllt sind. hab jetzt einfach das hinzugefügt.
Delphi-Quellcode:
try
eins:=StrToInt(edit1.text); zwei:=StrToInt(edit2.text); drei:=StrToInt(edit3.text); vier:=StrToInt(edit4.Text); fuenf:=StrToInt(edit5.Text); except ShowMessage('Bitte Fülle alle Felder aus!'); abort; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:55 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