Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Quelltext vereinfachen!!! (https://www.delphipraxis.net/18355-quelltext-vereinfachen.html)

Christian18 17. Mär 2004 10:00


Quelltext vereinfachen!!!
 
Hallo,

Ich habe mir ein kleines Programm geschrieben, womit ich schnell bit und byte u.s.w. erechnen kann. der Quelltext ist bloß sehr lang und unübersichtlich. Das programm läuft so weit ganz gut. Wie kann ich den Quelltext übersichtlich gestalten? Also weniger quelltext und so. Hier mein QuellText:

Delphi-Quellcode:
unit UMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TFMain = class(TForm)
    Button1: TButton;
    Button2: TButton;
    EEingabe: TEdit;
    RBBit: TRadioButton;
    RBByte: TRadioButton;
    RBKByte: TRadioButton;
    RBMByte: TRadioButton;
    RBGByte: TRadioButton;
    RBTByte: TRadioButton;
    EBit: TEdit;
    EByte: TEdit;
    EKByte: TEdit;
    EMByte: TEdit;
    EGByte: TEdit;
    ETByte: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Button3: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure EEingabeEnter(Sender: TObject);
    procedure EEingabeExit(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  FMain: TFMain;

implementation

uses UImpressum;

{$R *.dfm}

procedure TFMain.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if shift=[] then begin
    case key of
      27: Close;
    end;
  end;
end;

procedure TFMain.Button2Click(Sender: TObject);
begin
  Close;
end;

procedure TFMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if MessageDlg('Möchten Sie das Programm wirklich beenden ?',mtConfirmation,[mbYES,mbNO],0)=mrYes then
    CanClose:=True
  else
    CanClose:=False;
end;

procedure TFMain.Button1Click(Sender: TObject);
  var zahl1:   Real;
      ergebnis: Real;
begin
  if
    RBBit.Checked=True
  then
    begin
    zahl1:=0;
    ergebnis:=0;
    EBit.Text:=EEingabe.Text;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 / 8;
    EByte.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 / 8 / 1024;
    EKByte.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 / 8 / 1024 / 1024;
    EMByte.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 / 8 / 1024 / 1024 / 1024;
    EGByte.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 / 8 / 1024 / 1024 / 1024 / 1024;
    ETByte.Text:=FloatToStr(ergebnis);
    end;

//------------------------------------------------------------------------------

  if
    RBByte.Checked=True
  then
    begin
    zahl1:=0;
    ergebnis:=0;
    EByte.Text:=EEingabe.Text;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 * 8;
    EBit.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 / 1024;
    EKByte.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 / 1024 / 1024;
    EMByte.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 / 1024 / 1024 / 1024;
    EGByte.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 / 1024 / 1024 / 1024 / 1024;
    ETByte.Text:=FloatToStr(ergebnis);
    end;

//------------------------------------------------------------------------------

  if
    RBKByte.Checked=True
  then
    begin
    zahl1:=0;
    ergebnis:=0;
    EKByte.Text:=EEingabe.Text;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 * 1024;
    EByte.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 * 8 * 1024;
    EBit.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 / 1024;
    EMByte.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 / 1024 / 1024;
    EGByte.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 / 1024 / 1024 / 1024;
    ETByte.Text:=FloatToStr(ergebnis);
    end;

//------------------------------------------------------------------------------

  if
    RBMByte.Checked=True
  then
    begin
    zahl1:=0;
    ergebnis:=0;
    EMByte.Text:=EEingabe.Text;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 * 1024;
    EKByte.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 * 1024 * 1024;
    EByte.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 * 8 * 1024 * 1024;
    EBit.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 / 1024;
    EGByte.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 / 1024 / 1024;
    ETByte.Text:=FloatToStr(ergebnis);
    end;

//------------------------------------------------------------------------------

  if
    RBGByte.Checked=True
  then
    begin
    zahl1:=0;
    ergebnis:=0;
    EGByte.Text:=EEingabe.Text;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 * 1024;
    EMByte.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 * 1024 * 1024;
    EKByte.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 * 1024 * 1024 * 1024;
    EByte.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 * 8 * 1024 * 1024 * 1024;
    EBit.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 / 1024;
    ETByte.Text:=FloatToStr(ergebnis);
    end;

//------------------------------------------------------------------------------

  if
    RBTByte.Checked=True
  then
    begin
    zahl1:=0;
    ergebnis:=0;
    ETByte.Text:=EEingabe.Text;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 * 1024;
    EGByte.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 * 1024 * 1024;
    EMByte.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 * 1024 * 1024 * 1024;
    EKByte.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 * 1024 * 1024 * 1024 * 1024;
    EByte.Text:=FloatToStr(ergebnis);

    zahl1:=0;
    ergebnis:=0;
    zahl1:=StrToFloat(EEingabe.Text);
    ergebnis := zahl1 * 8 * 1024 * 1024 * 1024 * 1024 * 1024;
    EBit.Text:=FloatToStr(ergebnis);
    end;

  if
    RBBit.Checked=True
    and
    RBByte.Checked=True
    and
    RBKByte.Checked=True
    and
    RBMByte.Checked=True
    and
    RBGByte.Checked=True
    and
    RBTByte.Checked=True
  then
    ShowMessage('Bitte treffen Sie erst eine Auswahl!');

end;

procedure TFMain.EEingabeEnter(Sender: TObject);
begin
  EEingabe.Color:=clYellow;
end;

procedure TFMain.EEingabeExit(Sender: TObject);
begin
  EEingabe.Color:=clWindow;
end;

procedure TFMain.Button3Click(Sender: TObject);
begin
  FImpressum.ShowModal;
end;

end.

Evian 17. Mär 2004 10:08

Re: Quelltext vereinfachen!!!
 
Versuch mal mit Schleifen zu arbeiten, so wird dein Code effizienter und kürzer,
warte ich versuch Deinen Code mal umzubauen...

Hansa 17. Mär 2004 10:08

Re: Quelltext vereinfachen!!!
 
Da fast alles dasselbe ist würde ich mir mal eine allgemeine Prozedur/Funktion überlegen. Case sehe ich auch keins.

Dannyboy 17. Mär 2004 10:16

Re: Quelltext vereinfachen!!!
 
Yo hallo,
1) Du solltest mal modulileren (in Methoden zusammen fassen)
2) Nimm mal die power-Funktion für Exponential- Berechnungen anstatt. ... * 1024 * 1024 * 1024
Delphi-Quellcode:
Sowas hier ...

if shift=[] then begin
    case key of
      27: Close;
    end;
  end;

... ersetze mal durch

if (shift=[]) AND (key = 27) then Close;

Evian 17. Mär 2004 10:52

Re: Quelltext vereinfachen!!!
 
schick mir mal Deinen code.. an Philipp@Phillsoft.de dann schreibe ich ihn Dir ein bischen um!
(mit Project Dateien)

Christian18 17. Mär 2004 11:18

Re: Quelltext vereinfachen!!!
 
Vielen Dank für die hilfen! ich habe meinen Code jetzt in eine kleine schliefe gefasst und es funktioniert auch. also vielen dank noch einmal!

Bye Bye Christian18


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 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