Autor |
Beitrag |
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: So 22.04.07 14:37
Ungefähr so
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.Button1Click(Sender: TObject); begin if Length(Edit1.Text)< 4 then Edit1.Text:=Edit1.Text + '1' else Button1.Enabled:= False; end;
procedure TForm1.Button2Click(Sender: TObject); begin if Length(Edit1.Text)< 4 then Edit1.Text:=Edit1.Text + '2' else Button2.Enabled:= False; end; |
Was soll daran nicht funktionieren.
Sei mal nicht so sparsam mit deinen Erläuterungen.
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
|
Jakob Schöttl
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: So 22.04.07 15:19
Programmierer83 hat folgendes geschrieben: | Hallo.
Also danke für die Korrektion @ BenBe.
Nur wenn ich den Quelltext in Button1.click rein kopiere dann habe ich keine Begrenzung, nur wenn ich den Button1 drücke wird dafür "11" in das Editfeld eingetragen.
Da scheint also noch der Wurm drin zu sein. |
Du musst das natürlich in die Ereignisbehandlungsroutinen von allen Buttons reinkopieren! und natürlich den Quellcode anpassen...
@BenBE: Kann passieren, dass ich mich bei Length vertippe oder Klammern falsch setze, naja hauuptsache ich weiß was ich mein  und wenn man bisschen Ahnung hat, dann kommt man auch selber drauf.
aber was ist denn an den Kommentaren semantisch (=inhaltlich?) fehlerhaft? Die Optimierung habe ich natürlich auch weggelassen, sonst is es zu schwierig.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: So 22.04.07 15:48
Die Semantische Prüfung beinhaltet auch u.a. die Typen-Prüfung. Und es ist ein großer Unterschied, ob ich eine Zahl (Integer) zu einem String hinzufüge, oder ein Zeichen (Char)  Korrekt hätte der Kommentar gehießen: Delphi-Quelltext Das kommt nämlich auch dem was Delphi intern ausführt wesentlich näher als eine String-Addition laut dem Kommentar ... Intern wird nämlich LStrConcat aufgerufen (Long String Concatenation). Das hat also mit einer "Long String with Integer Addition" recht wenig zu tun 
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Jakob Schöttl
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: So 22.04.07 17:07
naja, meine Kommentare waren ja nicht für so einen scharfsinnigen Programmierer wie dich BenBE! 
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Mo 23.04.07 07:38
Moin! Man kann das Ganze ja auch unnötig verkomplizieren, und die selben 4 Zeilen in jedes OnButton-Klick-Ereignis schreiben Ich hätte es so gelöst: 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: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52:
| unit hauptprogramm;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type Tmainform = class(TForm) pin_edit: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; Button10: TButton;
procedure FillInNumber(Sender: TObject); procedure FormCreate(Sender: TObject); private public end;
var mainform: Tmainform; InAEdit: TEdit;
implementation
{$R *.dfm}
procedure Tmainform.FillInNumber(Sender: TObject); begin; if length(InAEdit.Text) >= 4 then InAEdit.Clear;
InAEdit.text:= InAEdit.text + TButton(Sender).Caption; end;
procedure Tmainform.FormCreate(Sender: TObject); begin InAEdit:= pin_edit; end;
end. | Testanwendung im Anhang. Und ja, natürlich ist es nicht ganz sinnig, das Edit erst in eine Variable zu schreiben, ich hatte die ganze Prozedur erst anders angelegt, und war zu "faul" die 3 InAEdit aus der Prozedur umzuschreiben :) LG Stefan
Einloggen, um Attachments anzusehen!
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
Jakob Schöttl
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: Mo 23.04.07 14:15
ZeitGeist87 hat folgendes geschrieben: | Man kann das Ganze ja auch unnötig verkomplizieren, und die selben 4 Zeilen in jedes OnButton-Klick-Ereignis schreiben |
die selbe zeile (ist doch nur eine! - bei mir  )
Auf diese Art mit Typ-Casting wären außer dir natürlich auch noch andere gekommen, aber ich fand, das ist für Anfänger ein Quellcode, den sie überhaupt nicht verstehen...
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Mo 23.04.07 14:28
Jakob Schöttl hat folgendes geschrieben: | ZeitGeist87 hat folgendes geschrieben: | Man kann das Ganze ja auch unnötig verkomplizieren, und die selben 4 Zeilen in jedes OnButton-Klick-Ereignis schreiben |
die selbe zeile (ist doch nur eine! - bei mir ) |
Wer sagt, das ich das auf deinen Source bezogen habe?
Jakob Schöttl hat folgendes geschrieben: | [Auf diese Art mit Typ-Casting wären außer dir natürlich auch noch andere gekommen, aber ich fand, das ist für Anfänger ein Quellcode, den sie überhaupt nicht verstehen... |
Unterstellst du Anfängern geistige Inkompetenz bzgl. des Lernens?
Es wird doch wohl noch erlaubt sein, seine Meinung zu äußern und Tipps zu geben.
Früher oder später erinnert er sich und verwendet es so
LG
Stefan
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mo 23.04.07 14:50
Sagen wir's so: Hätt ich gewollt, hätt ich die Lösung bereits in meinem ersten Post genau so posten können. Ich habe allerdings darauf verzichtet, weil 1. unserem Threadersteller die Grundlagen noch nicht vollständig liegen, 2. das in den Bereich Optimierungen zählt. Beides hat in einem Thread, wo erst einmal die Grundlagen erklärt werden müssen nur bedingt was zu tun. Mit "Unfähigkeit beim Lernen" hat das nichts zu tun. Eher mit linearem Lernvorgehen: Vom Einfachen zum Schwereren... Wenn Du da nach Schritt 1 gleich Schritt 50004 postest, dann wird das im schlimmsten Fall ein Copy&Paste-Programm womit keinem geholfen wäre.
2ct.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Mo 23.04.07 14:55
BenBE hat folgendes geschrieben: | Sagen wir's so: Hätt ich gewollt, hätt ich die Lösung bereits in meinem ersten Post genau so posten können. Ich habe allerdings darauf verzichtet, weil 1. unserem Threadersteller die Grundlagen noch nicht vollständig liegen, 2. das in den Bereich Optimierungen zählt. Beides hat in einem Thread, wo erst einmal die Grundlagen erklärt werden müssen nur bedingt was zu tun. Mit "Unfähigkeit beim Lernen" hat das nichts zu tun. Eher mit linearem Lernvorgehen: Vom Einfachen zum Schwereren... Wenn Du da nach Schritt 1 gleich Schritt 50004 postest, dann wird das im schlimmsten Fall ein Copy&Paste-Programm womit keinem geholfen wäre.
2ct. |
Das Ganze war lediglich eine Meinungsäußerung von meinerseits.
Natürlich ist es klar, dass ihm damit nicht wirklich geholfen ist.
Es war auch nur ein Fingerzeig in die Richtung, wie man es effizienter und adäquater lösen könnte!
Könnte <> Müssen!!
Deswegen versteh ich nicht ganz, warum meinen Meinung in Frage gestellt wird.
LG
Stefan
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
Jakob Schöttl
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: Mo 23.04.07 15:01
ZeitGeist87 hat folgendes geschrieben: | Natürlich ist es klar, dass ihm damit nicht wirklich geholfen ist. |
Da sind wir ja einer Meinung
ZeitGeist87 hat folgendes geschrieben: | Es war auch nur ein Fingerzeig in die Richtung, wie man es effizienter und adäquater lösen könnte! |
ja... hast ja recht, nur so ein Fingerzeig hilft meistens einem Anfänger eher weniger, wenn er Hausaufgaben auf Montag auf hat, glaub ich
ZeitGeist87 hat folgendes geschrieben: | Deswegen versteh ich nicht ganz, warum meinen Meinung in Frage gestellt wird.  |
Ich wollte/hab nicht deine Meinung in Frage gestellt.
 Viele Grüße, Jakob
|
|
Programmierer83 
      
Beiträge: 23
|
Verfasst: Mi 25.04.07 18:39
Hi.
Also ich bin jetzt soweit gekommen: siehe Screenshot.
Ich kann jetzt die PIN über die Buttons einbauen.
3x false PIN = Deaktivierung des Eingabebereiches.
Ich möchte jetzt aber erreichen, dass man den "Bestätigen"-Button nur dann drücken kann, wenn etwas im Editfeld eingetragen ist.
Ich habs so versucht:
if edit1.text='' then bitbtn1.enabled:=false
else bitbtn1.enabled:=true;
//Hab das in Tform1.Panel1Click reingemacht und auch in anderen Unterprogrammen, wie TForm.Formcreate versucht - geht irgendwie nicht.
Entweder ist der Button bei Programmstart zwar deaktiviert, wenn ich was in editfeld eingebe, bleibt er aber deaktiviert.
Oder er ist von Anfang an nicht deaktiviert.
Spinnt also irgendwie rum.
Hab den Quelltext dazugefügt.
Weiss einer Rat?
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: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons;
type TForm1 = class(TForm) Panel1: TPanel; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; Button10: TButton; Button1: TButton; Button2: TButton; Edit1: TEdit; BitBtn1: TBitBtn; Label1: TLabel; Panel2: TPanel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button10Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end;
var Form1: TForm1; PIN_EINGABE, PIN_ECHT:word; Kontostand, Abheben, Kredit:word; Anzahl:byte;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin if Length(Edit1.text)< 4 then Edit1.text:=Edit1.text + '1' end;
procedure TForm1.Button2Click(Sender: TObject); begin if Length(Edit1.Text)< 4 then Edit1.Text:=Edit1.Text + '2' end;
procedure TForm1.Button3Click(Sender: TObject); begin if Length(Edit1.Text)< 4 then Edit1.Text:=Edit1.Text + '3' end;
procedure TForm1.Button4Click(Sender: TObject); begin if Length(Edit1.Text)< 4 then Edit1.Text:=Edit1.Text + '4' end;
procedure TForm1.Button5Click(Sender: TObject); begin if Length(Edit1.Text)< 4 then Edit1.Text:=Edit1.Text + '5' end;
procedure TForm1.Button6Click(Sender: TObject); begin if Length(Edit1.Text)< 4 then Edit1.Text:=Edit1.Text + '6' end;
procedure TForm1.Button7Click(Sender: TObject); begin if Length(Edit1.Text)< 4 then Edit1.Text:=Edit1.Text + '7' end;
procedure TForm1.Button8Click(Sender: TObject); begin if Length(Edit1.Text)< 4 then Edit1.Text:=Edit1.Text + '8' end;
procedure TForm1.Button9Click(Sender: TObject); begin if Length(Edit1.Text)< 4 then Edit1.Text:=Edit1.Text + '9' end;
procedure TForm1.Button10Click(Sender: TObject); begin if Length(Edit1.Text)< 4 then Edit1.Text:=Edit1.Text + '0' end;
procedure TForm1.BitBtn1Click(Sender: TObject); begin PIN_ECHT:=2288; PIN_EINGABE:=strtoint(edit1.text); if PIN_EINGABE = PIN_ECHT then begin edit1.clear; label1.caption:='PIN war richtig'; end else begin label1.caption:='Falsche PIN!'; edit1.clear; edit1.setfocus; Anzahl:=Anzahl+1; end; if Anzahl > 2 then begin Button1.enabled:=false; Button2.enabled:=false; Button3.enabled:=false; Button4.enabled:=false; Button5.enabled:=false; Button6.enabled:=false; Button7.enabled:=false; Button8.enabled:=false; Button9.enabled:=false; Button10.enabled:=false; bitbtn1.enabled:=false; edit1.enabled:=false; label1.caption:='Kontozugriff gesperrt!'; end;
end;
procedure TForm1.FormCreate(Sender: TObject); begin if edit1.text='' then bitbtn1.enabled:=false else bitbtn1.enabled:=true; end;
end. |
Einloggen, um Attachments anzusehen!
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Mi 25.04.07 18:47
OnChange und Crashkurs 
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
|
Programmierer83 
      
Beiträge: 23
|
Verfasst: Mi 25.04.07 18:56
TForm1.Edit1Change <-- meinst du das? Muss das dort rein? Funzt leider nicht.
Den Crashkurs ackere ich grad durch.
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Mi 25.04.07 19:18
Da hättest Du aber jetzt von allein drauf kommen können.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.FormCreate(Sender: TObject); begin Button1.Enabled:=False; end;
procedure TForm1.Edit1Change(Sender: TObject); begin if Length(Edit1.Text)> 0 then Button1.Enabled:=True else Button1.Enabled:=False; end; |
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
|
Programmierer83 
      
Beiträge: 23
|
Verfasst: Mi 25.04.07 20:35
Blackheart666 hat folgendes geschrieben: | Da hättest Du aber jetzt von allein drauf kommen können.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.FormCreate(Sender: TObject); begin Button1.Enabled:=False; end;
procedure TForm1.Edit1Change(Sender: TObject); begin if Length(Edit1.Text)> 0 then Button1.Enabled:=True else Button1.Enabled:=False; end; | |
Ach Mist, die einfachsten Sachen wollen einem oft nicht einfallen...
THX
|
|
ByteKiller
      
Beiträge: 32
Win Vista, XP Pro SP2
Delphi 7 (Delphi 2005)
|
Verfasst: Mi 25.04.07 22:18
Hi,
@ BenBe:
ich wollte von dir bloß mal wissen was du mit "Event-Handler" meinst
ich hätte das mit den Buttons so gemacht (wenn die Buttons die Caption 1..10 haben):
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Button1Click(Sender: TObject); begin if length(Edit1.Text) < 4 then begin Edit1.Text := Edit1.Text + (Sender as TButton).Caption; panel2.Caption := panel2.Caption + '*'; end; end; |
MfG ByteKiller
Einloggen, um Attachments anzusehen!
|
|
Programmierer83 
      
Beiträge: 23
|
Verfasst: Sa 05.05.07 21:14
Hi,
dank eurer Starthilfe habe ich das Ding jetzt so gut wie fertig programmiert.
Aber ich möchte den Quelltext noch etwas optimieren.
zb. hier:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| Button1.visible:=false; Button2.visible:=false; Button3.visible:=false; Button4.visible:=false; Button5.visible:=false; Button6.visible:=false; Button7.visible:=false; Button8.visible:=false; Button9.visible:=false; Button10.visible:=false; |
gibt es irgendwie ne Möglichkeit das kleiner zu bekommen? Bestimmt.
Vllt. sowas wie:
With Buttons 1-10 do visible:=false
thx...
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Sa 05.05.07 21:18
FindComponent
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
|
Programmierer83 
      
Beiträge: 23
|
Verfasst: Sa 05.05.07 21:34
|
|
jakobwenzel
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Sa 05.05.07 21:35
Das Forum hat ne Suche und Delphi hat ne Hilfe.
_________________ I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
|
|
|