Autor Beitrag
GiuStyler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 65
Erhaltene Danke: 1

Win 8.1
Delphi XE6
BeitragVerfasst: Do 04.09.14 10:40 
Hallo liebes Forum :D ,

ich bin hier neu und brauche eine kleine Hilfe für die ich als Neuling noch kein Rat finde.

Es geht wie im Titel genannt um if-Verknüpfungen. Genau genommen sind es 3.

Ausgangslage.

Ich habe ein Taschenrechner gebaut wie viele zu Beginn auch. Nur ich habe mir keinen genommen der schon existiert ich habe nen eigenen produziert. Alles Funktioniert wie es soll.

Aber als Anfänger habe ich natürlich alles einzeln berechnen lassen etc. . Nun kam mein Chef und will, dass ich alles verkürze. Nun hänge ich an dieser Stelle mit den if-verknüpfungen.

Es geht hierbei darum, dass ich sage ich will maximal 10 Zeichen haben, dann soll überprüft werden ob ein (,) vorhanden ist, wenn ja, darf es kein weiteren zulassen und wenn als erstes ein (,) oder eine (0) angegeben wird, soll (0,) stehen.

Die einzelne Befehle sehen so aus

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
if (Length(Eingabefeld.Text) <=9then // Maximal 10 Zeichen zugelassen
    Eingabefeld.Text := Eingabefeld.Text+Eingabe;

if (Eingabefeld.Text = ','or (Eingabefeld.Text = '0'then // Wenn (,) or (0) als erstes geschrieben wird, ...
    Eingabefeld.Text := '0,'//... wird automatisch (0,) eingegeben

if (pos(',', Eingabefeld.Text) = 0then // Überprüfen ob (,) vorhanden ist
    Eingabefeld.Text := Eingabefeld.Text+(',');


Im alten Zustand wo ich alles noch einzeln habe geht der Code, aber nachdem ich die Befehle verkürzt habe, kriege ich diese 3 if-Verknüofungen nicht gebacken so laufen zu lassen wie ich Sie brauche.

Mein Chef meinte ich soll else nutzen, habe ich auch versuche, aber irgendwie klappt es nicht. Ich kriege nicht alles drei Sachen zum laufen. Trage ich diese so ein wie oben, dann gehen bei mir nur zwei Sachen, aber das (,) kommt so oft es will.

Wie kann ich es machen, dass es endlich geht und es funktioniert. Bitte um Hilfe :roll:


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mo 08.09.2014 um 16:27
baumina
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 305
Erhaltene Danke: 61

Win 7
Delphi 10.2 Tokyo Enterprise
BeitragVerfasst: Do 04.09.14 11:25 
Vorschlag meinerseits:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
  if Length(Eingabefeld.Text) = 10 then 
    Eingabe := ''// Maximal 10 Zeichen zugelassen

  if ((Eingabe = ','and (pos(',', Eingabefeld.Text) > 0)) then
    Eingabe := ''// nur einmal Komma zulassen

  if ((Eingabefeld.Text = ''and ((Eingabe = '0'or (Eingabe = ','))) then // Wenn (,) or (0) als erstes geschrieben wird, ...
      Eingabe := '0,'//... wird automatisch (0,) eingegeben

  Eingabefeld.Text := Eingabefeld.Text+Eingabe; // zum Schluß ins Feld schreiben

  // evtl. noch
  if Eingabe = '' then Beep;
end;

Für diesen Beitrag haben gedankt: GiuStyler
GiuStyler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 65
Erhaltene Danke: 1

Win 8.1
Delphi XE6
BeitragVerfasst: Do 04.09.14 11:30 
Hi.

Danke :D

Hat super geklappt. Problem ist damit gelöst.

Nun muss ich nachvollziehen wieso das so ist wie es ist, da ich selbst nicht draufgekommen bin.


PS: Problem ist erledigt, aber gibt es auch noch eine andere Möglichkeit mit den Verknüpfungen (else)?

Weil, mein Chef es mir ja so (angeordnet) hat. Bzw. gesagt hat, dass es so gehen soll/muss
baumina
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 305
Erhaltene Danke: 61

Win 7
Delphi 10.2 Tokyo Enterprise
BeitragVerfasst: Do 04.09.14 11:37 
Ein grober Fehler war das hier :
ausblenden Delphi-Quelltext
1:
2:
if (pos(',', Eingabefeld.Text) = 0then // Überprüfen ob (,) vorhanden ist
    Eingabefeld.Text := Eingabefeld.Text+(',');

Ganz unabhängig vom eingegebenen Zeichen schaust du nach ob im Text bereits ein Komma ist, wenn nicht, klatscht du eins dran.

Sprich, steht im Text vorher nix drin und du tippst du ne "4", kam "4," raus.
GiuStyler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 65
Erhaltene Danke: 1

Win 8.1
Delphi XE6
BeitragVerfasst: Do 04.09.14 11:43 
Ah ok. Ergibt im nachhinein Sinn, wenn man die Erklärung dazu hat.

Mein problem war auch gewesen, dass der Code wie oben geschrieben im anderen Fall wo noch alles einzeln eingetragen war auch funktionierte und ich nicht verstanden habe wieso es nun in der kürzeren weiße nicht ging.

Aber nun klingt es logisch.
baumina
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 305
Erhaltene Danke: 61

Win 7
Delphi 10.2 Tokyo Enterprise
BeitragVerfasst: Do 04.09.14 11:45 
user profile iconGiuStyler hat folgendes geschrieben Zum zitierten Posting springen:

PS: Problem ist erledigt, aber gibt es auch noch eine andere Möglichkeit mit den Verknüpfungen (else)?

Weil, mein Chef es mir ja so (angeordnet) hat. Bzw. gesagt hat, dass es so gehen soll/muss


Natürlich kannst du den Code auch mit else-Zweigen machen. Das sähe dann evtl. so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
  
if Length(Eingabefeld.Text) = 10 then 
begin
  beep; // Maximal 10 Zeichen zugelassen
end else 
begin
  if ((Eingabe = ','and (pos(',', Eingabefeld.Text) > 0)) then
  begin
    beep;
  end else
  begin
    if ((Eingabefeld.Text = ''and ((Eingabe = '0'or (Eingabe = ','))) then // Wenn (,) or (0) als erstes geschrieben wird, ...
    begin
      Eingabefeld.Text := '0,'//... wird automatisch (0,) eingegeben
    end else
    begin
      Eingabefeld.Text := Eingabefeld.Text+Eingabe; 
    end;
  end;
end;

Für diesen Beitrag haben gedankt: GiuStyler
GiuStyler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 65
Erhaltene Danke: 1

Win 8.1
Delphi XE6
BeitragVerfasst: Do 04.09.14 11:52 
Danke funktioniert auch.

Erstaublich das es mehr Wege gibt um das gleiche zu bekommen.

Ich gebe Dir recht, dass andere sieht übersichtlcher aus, aber mein Chef will es mit dem else haben. Ich mache das nun erst mal mit dem (else).

Es geht darum das ich Delphi lerne, weil wir im Betrieb dies nutzen.

Habe vorher nur seitenbezogen (HTML) und etwas (PHP) gemacht und auch damals mit PHP habe ich mich schwer gemacht und auch heute noch, dann kam ich hier und soll Delphi wusste bis vor meiner Ausbildung gar nicht das es Delphi gibt, aber ich finde Delphi sehr cool, vorallem, weil es sofort Rückmeldung gibt, wenn etwas verkehrt ist.

Um kurz etwas zu zeigen, vorher war es so, Grund ich habe zwei Seiten wo ich zwei Buttonbereiche habe. So hat der Code mit dem (,) problem funktioniert als ich es nun verkürzen sollte sieht es nun so aus (nach diesem Code schauen)

ausblenden volle Höhe Delphi-Quelltext
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:
if (Length(EditZahlA.Text) <=9)
    then
      if (Sender is TButton) then
        case (Sender as TButton).Tag of
           0: EditZahlA.Text := EditZahlA.Text+IntToStr(0);
           1: EditZahlA.Text := EditZahlA.Text+IntToStr(1);
           2: EditZahlA.Text := EditZahlA.Text+IntToStr(2);
           3: EditZahlA.Text := EditZahlA.Text+IntToStr(3);
           4: EditZahlA.Text := EditZahlA.Text+IntToStr(4);
           5: EditZahlA.Text := EditZahlA.Text+IntToStr(5);
           6: EditZahlA.Text := EditZahlA.Text+IntToStr(6);
           7: EditZahlA.Text := EditZahlA.Text+IntToStr(7);
           8: EditZahlA.Text := EditZahlA.Text+IntToStr(8);
           9: EditZahlA.Text := EditZahlA.Text+IntToStr(9);
          21if pos(',', EditZahlA.Text) = 0 then
                EditZahlA.Text := EditZahlA.Text+(',');
        end;
        if EditZahlA.Text = ',' then
          EditZahlA.Text := '0,';

    if (Length(EditZahlB.Text) <=9)
    then
      if (Sender is TButton) then
        case (Sender as TButton).Tag of
          10: EditZahlB.Text := EditZahlB.Text+IntToStr(0);
          11: EditZahlB.Text := EditZahlB.Text+IntToStr(1);
          12: EditZahlB.Text := EditZahlB.Text+IntToStr(2);
          13: EditZahlB.Text := EditZahlB.Text+IntToStr(3);
          14: EditZahlB.Text := EditZahlB.Text+IntToStr(4);
          15: EditZahlB.Text := EditZahlB.Text+IntToStr(5);
          16: EditZahlB.Text := EditZahlB.Text+IntToStr(6);
          17: EditZahlB.Text := EditZahlB.Text+IntToStr(7);
          18: EditZahlB.Text := EditZahlB.Text+IntToStr(8);
          19: EditZahlB.Text := EditZahlB.Text+IntToStr(9);
          22if pos(',', EditZahlB.Text) = 0 then
                EditZahlB.Text := EditZahlB.Text+(',');
        end;
        if EditZahlB.Text = ',' then
          EditZahlB.Text := '0,';
end;


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
if (Sender is TButton) then
    case (Sender as TButton).Tag  of
      0,1,2,3,4,5,6,7,8,9,21 : Zeichenhinzu(EditZahlA, TButton(Sender).Caption);
      10,11,12,13,14,15,16,17,18,19,22 : Zeichenhinzu(EditZahlB, TButton(Sender).Caption);
    end;


Nun bliebt das problem mit dem was un erledigt ist. Dafür wurde eine eigene procedure erstellt. Mein Verständnisproblem war, dass eben der Code was scheinbar falsch ist mit dem alten muster klappte wieso auch immer.


Zuletzt bearbeitet von GiuStyler am Do 04.09.14 12:05, insgesamt 1-mal bearbeitet
baumina
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 305
Erhaltene Danke: 61

Win 7
Delphi 10.2 Tokyo Enterprise
BeitragVerfasst: Do 04.09.14 12:01 
Dass Programmcode als "Sprache" bezeichnet wird, finde ich sehr passend, denn man kann eine Aussage ganz verschieden formulieren, doch das Ergebnis ist immer das Gleiche.

Wichtig beim Programmieren ist es, zuerst in deiner Muttersprache klare Aussagen zu definieren. Diese dann in Programmcode umzusetzen, ist einfach. Deine Beschreibung "Es geht hierbei darum, dass ich sage ich will maximal 10 Zeichen haben, dann soll überprüft werden ob ein (,) vorhanden ist, wenn ja, darf es kein weiteren zulassen und wenn als erstes ein (,) oder eine (0) angegeben wird, soll (0,) stehen." war z.B. sehr gut.
GiuStyler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 65
Erhaltene Danke: 1

Win 8.1
Delphi XE6
BeitragVerfasst: Fr 05.09.14 08:56 
Habe da noch eine Frage.

Mein Chef kam gerade und meinte ich könnte es auch so schreiben

Vorher von Dir
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
if Length(Eingabefeld.Text) = 10 then
   else
   begin
     if((Eingabe = ','and (pos(',',Eingabefeld.Text) >0)) then
...


Nachher von meinem Chef
ausblenden Delphi-Quelltext
1:
2:
3:
4:
if Length(Eingabefeld.Text) <= 9 then
   begin
     if((Eingabe = ','and (pos(',',Eingabefeld.Text) >0)) then
...

und es geht auch. Nun will er das diese zwei Zeilen noch zusammengefasst werden.

Habe nun das versucht

ausblenden Delphi-Quelltext
1:
2:
begin
if (Length(Eingabefeld.Text) <= 9and ((Eingabe = ','and (pos(',',Eingabefeld.Text) >0)) then

aber dann geht nichts mehr. Wenn ich aus dem ersten and ein or mache, dann geht es zwar wieder, aber kann wieder massenweise (,) machen.

Wo ist mein Denkfehler beim zusammenfassen? Das das and nicht geht ist mir gerade auch logisch, da ja dann alles geschehen muss, damit es klappt.

MfG



mit dem zusammenfassen?
baumina
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 305
Erhaltene Danke: 61

Win 7
Delphi 10.2 Tokyo Enterprise
BeitragVerfasst: Fr 05.09.14 09:22 
Dein Chef möchte sicherlich, dass du dir das Verständnis der if-Abfragen so verinnerlichst, dass du es perfekt beherrscht. Er ist der Meinung, dass du das am Besten erreichst, in dem du dir das selbst erarbeitest und damit auch verstehst. Das entspricht auch meiner Meinung. Ich helfe immer wieder gerne, aber in deinem Fall tust du dir echt keinen Gefallen, hier Lösungen zu holen statt nachzudenken. Also bitte nicht böse sein, wenn du heute von mir keine vorgekauten Lösungen mehr bekommst.

Versuche wie in der Mathematik deine Vorgabe genau zu formulieren und setze diese dann in die Programmiersprache um. Viel Erfolg!

Grüßle
baumina
GiuStyler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 65
Erhaltene Danke: 1

Win 8.1
Delphi XE6
BeitragVerfasst: Mo 08.09.14 15:11 
Hallo.

Da es sich ja noch um den gleichen Code handelt, der nun optimiert wurde bleibe ich bei diesem Thread statt einen neuen aufzumachen.

Es geht nun darum, dass ich vorher abfange das nur zahlen möglich sind, wenn ich die Eingaben über die Tastatur mache.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TFormTaschenrechner.Zeichenhinzu(Eingabefeld: TEdit; Eingabe: string);
begin
  if Length(Eingabefeld.Text) <= 9 then
    begin
      if (Eingabe = ','then
        if (pos (',',Eingabefeld.Text) > 0then
          Eingabe := '';
          if ((Eingabefeld.Text = ''and ((Eingabe = '0'or (Eingabe = ','))) then
              Eingabefeld.Text := '0,'
              else
              Eingabefeld.Text := Eingabefeld.Text+Eingabe;
    end;
end;


der Zweite Teil ist

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TFormTaschenrechner.EditZahlKeyPress(Sender: TObject; var Key: Char);
begin
  Zeichenhinzu(TEdit(Sender), Key);
end;


Hier war vorher der Code drin, dass nur Zahlen und (,) erlaubte. Da ich nun das vereinfacht habe und auf den vorhanden Code oben zugreife, da es ja das gleiche macht was auch der untere tat.

Die Frage lautet nun, wie kriege ich noch in den obigen Code die Abfrage hin, dass nur Zahlen und (,) erlaubt sind.

Da steige ich noch nicht so ein. Die andere Variante hatte ich ja ohne Probleme, aber will das nun vereinfachen.

MfG

Edit:

Also, wenn ich unten das einfüge, dass es so aussieht, dann geht es

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TFormTaschenrechner.EditZahlKeyPress(Sender: TObject; var Key: Char);
begin
  //if not (Key in ['0'..'9', Char(VK_BACK)]) then
    //Key := #0;
  Zeichenhinzu(TEdit(Sender), Key);
end;

nur oben kriege ich es nicht hin, und ich will es das es oben ist
baumina
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 305
Erhaltene Danke: 61

Win 7
Delphi 10.2 Tokyo Enterprise
BeitragVerfasst: Mo 08.09.14 15:42 
Statt "Key in" solltest du lieber CharInSet verwenden. Der Compiler müsste aber diesbezüglich auch eine Warnung bringen.
Dann musst du in deiner Prozedur den Parameter "Eingabe" in "var Eingabe : String" ändern, damit du #0 auch zurückgeben kannst.
GiuStyler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 65
Erhaltene Danke: 1

Win 8.1
Delphi XE6
BeitragVerfasst: Mo 08.09.14 15:58 
Danke ich versuchs.

Die Eingabe ist ja schon string.

Der Code muss dann ins obere eingebaut werden. Das untere muss ja dann wieder weg also nur der Code für die Tasten.
baumina
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 305
Erhaltene Danke: 61

Win 7
Delphi 10.2 Tokyo Enterprise
BeitragVerfasst: Mo 08.09.14 16:03 
Ich mein statt

ausblenden Delphi-Quelltext
1:
procedure TFormTaschenrechner.Zeichenhinzu(Eingabefeld: TEdit; Eingabe: string);					


ausblenden Delphi-Quelltext
1:
procedure TFormTaschenrechner.Zeichenhinzu(Eingabefeld: TEdit; var Eingabe: string);					


bzw. noch besser

ausblenden Delphi-Quelltext
1:
procedure TFormTaschenrechner.Zeichenhinzu(Eingabefeld: TEdit; var Eingabe: Char);					


Aber spätestens jetzt frag ich mich warum eine extra procedure?
GiuStyler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 65
Erhaltene Danke: 1

Win 8.1
Delphi XE6
BeitragVerfasst: Mo 08.09.14 16:21 
Also mein Taschenrechner ist nicht Standard.

Ich begann erst mit

Zwei Editfelder (wo ich die einzelne Zahlen eingab über die Tastatur)
Ein Editfeld (wo das Ergebnis angezeigt wurde)
und die vier Buttons für die Operatoren

Das habe ich sofort hinbekommen ohne Probleme.

Danach dachte ich mir ok, dann kannst Du auch Buttons mit den einzelnen Zahlen machen.
Nun sieht es so aus, dass ich zwei mal die Buttons habe. Eine links und eine rechts.

Zu beginn hatte ich dann einen riesenlangen Quellcode. Einmal für die linke und einmal für die rechte Seite

Dann kam mein Chef und meinte man kann ja alles zusammenführen, wenn die gleichen Bedingungen für beide Seiten gelten. So Enstand dann das hier

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TFormTaschenrechner.Zeichenhinzu(Eingabefeld: TEdit; Eingabe: string);
begin
  if Length(Eingabefeld.Text) <= 9 then
    begin
      if (Eingabe = ','then
        if (pos (',',Eingabefeld.Text) > 0then
          Eingabe := '';
          if ((Eingabefeld.Text = ''and ((Eingabe = '0'or (Eingabe = ','))) then
              Eingabefeld.Text := '0,'
              else
              Eingabefeld.Text := Eingabefeld.Text+Eingabe;
    end;
end;


mit deiner Hilfe und ich habe es dann soweit optimiert. Nun war es aber so, dass diese procedure NUR mit den Buttons klappt.

In diesem Code war dann im groben das gleiche wie oben nur die Zahlen zulassen und das (,).

Dann kam mein Chef wieder uns meinte da ja bei beiden das gleiche passiert kann man es vereinfachen. So wurde aus dem langen Code für die Tastatureigenschaften, dieser Code. Nun greife ich auf das von oben. Alles klappt ja auch nur eben, dass jetzt die Begrenzung nur Zahlen und (,) fehlt.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TFormTaschenrechner.EditZahlKeyPress(Sender: TObject; var Key: Char);
begin
  Zeichenhinzu(TEdit(Sender), Key);
end;


nun habe ich unten den Code hinzugefügt und es funktioniert auch.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TFormTaschenrechner.EditZahlKeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9', Char(VK_BACK)]) then
    Key := #0;
  Zeichenhinzu(TEdit(Sender), Key);
end;


aber nun muss dass oben hinzugefügt werden in der procedure Zeichenhinzu. Als Tipp gab mein Chef mir (array of Char) aber weiter als array[0..9] of Char bin ich nicht, da ich das noch nicht verstehe.
ausblenden Delphi-Quelltext
1:
2:
if not (Key in ['0'..'9', Char(VK_BACK)]) then
    Key := #0;



Hoffe Du hast die Geschichte nun verstanden. Am Ende kann ich den Taschenrechner hochladen, dann verstehst Du was ich genau wollte etc. Ist eben mein eigener Taschenrechner mit meinem Style. Am Ende habe ich mich selbst reingeritten. Wollte meinem Chef zeigen was ich schon gelernt habe usw. und am Ende habe ich mir die ganzen Steine im Weg gelegt als ich auf die Idee kam mit den Buttons, erst dann begannen die Probleme, da die (erste Version) mit den 3 Felden und 4 Buttons sofort klappte.

MfG
baumina
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 305
Erhaltene Danke: 61

Win 7
Delphi 10.2 Tokyo Enterprise
BeitragVerfasst: Mo 08.09.14 16:39 
Da meine Vorschläge irgendwie eh nicht gut bei deinem Chef ankommen, lass ichs lieber. :roll:
GiuStyler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 65
Erhaltene Danke: 1

Win 8.1
Delphi XE6
BeitragVerfasst: Mo 08.09.14 16:45 
Na ja, wie sagt mein Chef immer

Es gibt gute Codes und Robuste Codes. Er will die Robusten, damit alle möglichen Einfälle die nicht sein sollen von vornherein bereinigt sind und es am Ende keine Probleme gibt.

mal schauen was dabei rauskommt.

array[0..9] of Char scheint richtig zu sein, aber irgendetwas fehlt noch. Mal schauen was.
Blup
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 173
Erhaltene Danke: 43



BeitragVerfasst: Mo 08.09.14 17:29 
Was willst du mit einem Array of Char hier erreichen?
Eigentlich sollte es reichen die einzelnen Bedingungen in richtiger Reihenfolge zu berücksichtigen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TFormTaschenrechner.Zeichenhinzu(Eingabefeld: TEdit; var Eingabe: Char);          
begin
  if Eingabe = Char(VK_BACK) then
    {Löschtaste immer möglich}
  else if not (Eingabe in ['0'..'9'',']) then
    Eingabe := #0 {andere Tasten sind unzulässig}
  else if (Length(Eingabefeld.Text) >= 10and (Eingabefeld.SelLength = 0then
    Eingabe := #0 {maximal 10 Stellen}
  else if (Eingabe = ','and (Pos(',', Eingabefeld.Text) > 0then
    Eingabe := #0 {nur ein Komma}
  else if (Eingabefeld.Text = ''and ((Eingabe = '0'or (Eingabe = ','))) then
  begin
    Eingabefeld.Text := '0,';
    Eingabe := #0{Taste ist damit bereits verarbeitet}   
  end;
end;
GiuStyler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 65
Erhaltene Danke: 1

Win 8.1
Delphi XE6
BeitragVerfasst: Mi 10.09.14 09:02 
Hi Blup,

Was ich mit dem array will, gute Frage. Hat mein Chef mir noch nicht verraten und wird es voraussichtlich bis Montag nicht mehr tun, da er außer Haus ist.

Es ging darum, dass

ich beim Zeichenhinzu die ereignisse für den Taschenrechner wenn ich die BUTTONS drücke einbeziehe.

Jetzt habe ich ja logischerweise auch noch eine Tastatur. Diese war in dem anderen Bereich KeyPress definiert. Mein Chef meinte zu mir dann, was dieser Bereich tut. Ich dann das gleiche/selbe wie das Zeichenhinzu, da es ja die gleichen befehle ausführen soll, darufhin mein Chef (also können wir alles in einem hinzufügen) als Tipp gab er mir dann array of Char.

Nun stehe ich hier und weiß nicht was er will. Und zur Klärung ist es noch nicht gekommen, da am Montag die Arbeitszeit zu Ende war und ich gestern meine Einschulung in der Berufschule hatte und er nun die restliche Woche wie oben erwähnt habe nicht da ist.

Ich nehme nun erstmal dein Tipp an. Mal schauen ob sich mein Chef damit zufrieden gibt.

Danke für die Hilfe.