Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Möchte meinen Script verkürzen bzw. function erstellen (https://www.delphipraxis.net/176158-moechte-meinen-script-verkuerzen-bzw-function-erstellen.html)

Homie15 15. Aug 2013 13:16

Möchte meinen Script verkürzen bzw. function erstellen
 
...

DeddyH 15. Aug 2013 14:12

AW: Möchte meinen Script verkürzen bzw. function erstellen
 
Zumindest die eigentliche Berechnung könntest Du in Funktionen auslagern und statt der If-Abfragen eine case-Abfrage verwenden.
Delphi-Quellcode:
function Kathete(AndereKathete, Hypotenuse: double): double;
begin
  Result := Sqrt(Sqr(Hypotenuse) - Sqr(AndereKathete));
end;

function Hypotenuse(Ankathete, Gegenkathete: double): double;
begin
  Result := Sqrt(Sqr(Ankathete) + Sqr(Gegenkathete));
end;

...

case Art of
  1: ...
  2: ...
  3: ...
end;

Homie15 15. Aug 2013 18:41

AW: Möchte meinen Script verkürzen bzw. function erstellen
 
schonmal danke, ich hatte iwie mehr daran gedacht die ifkeypressfunktionen in eine zu packen aber kein plan wie..

ringli 15. Aug 2013 18:53

AW: Möchte meinen Script verkürzen bzw. function erstellen
 
Du kannst den einzelnen Edit's im Objektinspektor jeweils die gleiche KeyPress-Procedure zuweisen. Damit hättest du nur noch eine KeyPress-Procedure die du ggf. anpasssen musst.

Furtbichler 15. Aug 2013 18:56

AW: Möchte meinen Script verkürzen bzw. function erstellen
 
Delphi-Quellcode:
procedure DoKeyPress (aEdit : TEdit; Var aKey : Char);
Begin
  if not (aKey in [#48..#57,#8,#44]) then aKey:=#0;
  if (aKey in[',']) and (aEdit.Text='') then
  begin
     aEdit.Text:= '0,';
     aEdit.Selstart:=Length(aEdit.Text);
  end;
  if (Key in[',']) and (pos(',',aAdit.Text)>0) then
    aKey:=#0;
End;

procedure TSatzdesPytagoras.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  DoKeyPress(Edit1, Key);
end;

procedure TSatzdesPytagoras.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
  DoKeyPress(Edit2, Key);
end;

procedure TSatzdesPytagoras.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
  DoKeyPress(Edit3, Key);
end;
Geht aber noch kürzer (Der 'Sender' ist jeweils das TEdit-Control, in dem eine Taste gedrückt wurde).

DeddyH 15. Aug 2013 18:56

AW: Möchte meinen Script verkürzen bzw. function erstellen
 
Dann musst Du aber auch den Sender auswerten.

Furtbichler 15. Aug 2013 22:15

AW: Möchte meinen Script verkürzen bzw. function erstellen
 
Zitat:

Zitat von DeddyH (Beitrag 1225011)
Dann musst Du aber auch den Sender auswerten.

Ja. Wenn man es noch kürzer macht. Sonst nicht.

Der schöne Günther 15. Aug 2013 22:47

AW: Möchte meinen Script verkürzen bzw. function erstellen
 
Ich hätte nie gedacht, dass ich auch einmal mit so etwas langeweile, aber ich glaube, wichtiger als ein paar Buchstaben einzusparen wäre erst einmal
  • den Kram ordentlich zu formatieren
  • grundlegende Sprachkonstrukte zu verstehen
  • Oberflächen-Komponenten richtige Namen zu geben?

    Das Formular "SatzdesPytagoras" (wenn schon, dann "Pythagoras", oder?) kann man ja noch machen, aber wenn man in ein paar Tagen nochmal über den Quelltext schaut hilft einem so etwas wie
    Delphi-Quellcode:
    Edit1
    und
    Delphi-Quellcode:
    Edit2
    sicher nicht weiter.

Was soll ein
Delphi-Quellcode:
if Art=3 then
 c:= Sqrt(Strtofloat(Edit1.text)*Strtofloat(Edit1.text) + Strtofloat(Edit2.text) * Strtofloat(Edit2.text));
  showmessage ('C ist: ' + floattostr(c));
 begin
 
end;
wirklich bewirken? Bei der Einrückung und begin/end-Benutzung weiß ich nicht, ob man wirklich verstanden hat, was man da tut.


Ich bin heute in Spaßbremsen-Stimmung. 8-)

DeddyH 15. Aug 2013 23:12

AW: Möchte meinen Script verkürzen bzw. function erstellen
 
Zitat:

Zitat von Furtbichler (Beitrag 1225057)
Zitat:

Zitat von DeddyH (Beitrag 1225011)
Dann musst Du aber auch den Sender auswerten.

Ja. Wenn man es noch kürzer macht. Sonst nicht.

Da haben sich unsere Posts überschnitten, die Antwort galt Deinem Vorredner. Bevor das aber nun in Geschwafel ausartet:
Delphi-Quellcode:
procedure DoOnKeyPress(Sender: TObject; var Key: char);
const
  KEY_BACKSPACE = #8;
var
  TheEdit: TEdit;
begin
  TheEdit := Sender as TEdit;
  case Key of
    '0'..'9', KEY_BACKSPACE:
      Key := #0;
    ',':
      if Pos(',', TheEdit.Text) > 0 then
        Key := #0
      else if TheEdit.Text = '' then
        begin
         TheEdit.Text := '0,';
         TheEdit.Selstart := Length(TheEdit.Text);
        end;
  end;
end;
Das kann man dann allen Edits als OnKeyPress-Handler zuweisen (der Code ist allerdings ungetestet).

Homie15 16. Aug 2013 05:46

AW: Möchte meinen Script verkürzen bzw. function erstellen
 
Danke für die nützlichen Antworten :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:34 Uhr.
Seite 1 von 2  1 2      

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