AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frosch hüpfen

Ein Thema von borstenei · begonnen am 12. Mai 2012 · letzter Beitrag vom 14. Mai 2012
Antwort Antwort
borstenei

Registriert seit: 12. Nov 2011
121 Beiträge
 
#1

Frosch hüpfen

  Alt 12. Mai 2012, 23:03
Delphi-Version: 2010
Nicht gleich lachen!
Mir ist gestern eine Exceldatei untergekommen...Frosch_hüpfen...ohne viel Worte...
Ich habe versucht das ganze mal per Delphi zu gestalten...es funktioniert.
Aber hier stellt sich mir wieder mal die Frage ist das so effektiv was ich da mache...sicher der fertigen exe sieht man(n) das Ergebniss nicht an
aber hat das Hand und Fuss ?
Ich verbrauche hier unzählige Zeilen für die Auswertung...das sollte doch bestimmt auch anders gehen?
Delphi-Quellcode:
unit frosch1;

interface

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

type
  TForm1 = class(TForm)
    Zuege: TLabel;
    Zeit: TLabel;
    Timer1: TTimer;
    Neu: TButton;
    Shape1: TShape;
    Shape2: TShape;
    Shape3: TShape;
    Shape4: TShape;
    Shape5: TShape;
    Shape6: TShape;
    Shape7: TShape;
    Bravo: TLabel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Shape3MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Shape5MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Shape2MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Shape1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Shape6MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Shape7MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure NeuClick(Sender: TObject);
    procedure Shape4MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    procedure auswerten;
    procedure neuzeichnen;
    { Public-Deklarationen }
  end;

type
  FarbenBasis = Array[0..6]of TColor;

var
  Form1: TForm1;
  FarbenWork : FarbenBasis;
  clicken,laufzeit : Integer;
const
Farben : FarbenBasis =(clGreen,clGreen,clGreen,clBtnFace,clRed,clRed,clRed);
EndZuStand : Array[0..6]of TColor =(clRed,clRed,clRed,clBtnFace,clGreen,clGreen,clGreen);


implementation

{$R *.dfm}

function SekToStr(sec: integer) : string ;
 var
 sek,min,h : Integer;
 begin
   sek := sec mod 60;
   min := (sec div 60) mod 60;
   h := sec div 3600;
   result := IntToStr(h)+'h '+IntToStr(min)+'min '+IntToStr(sek)+ 'sek ';
 end;

procedure TForm1.FormCreate(Sender: TObject);
begin
clicken := 0;
FarbenWork := Farben;
neuzeichnen;
end;

procedure TForm1.NeuClick(Sender: TObject);
begin
Timer1.Enabled := False;
laufzeit:= 0;
Zuege.Caption :='Anzahl der Züge : ';
Zeit.Caption :='Benötigte Zeit : ';
clicken := 0;
Bravo.Visible := False;
FarbenWork := Farben;
neuzeichnen

end;

procedure TForm1.auswerten; //vergleichen
var
x,i:Integer;
begin

i:= 0;
for x := 0 to 6 do
if FarbenWork[x] = EndZuStand[x] then //ist und soll vergleichen
inc(i);
if i = 7 then
begin
Bravo.Visible := True;
Timer1.Enabled := False;
end;
end;

procedure TForm1.neuzeichnen;
var
x:Integer;
begin
for x := 0 to 6 do
(FindComponent('Shape' + IntToStr(x+1))as TShape).Brush.Color := FarbenWork[x];

for x := 0 to 6 do
if(FindComponent('Shape' + IntToStr(x+1))as TShape).Brush.Color = clred then
 (FindComponent('Label' + IntToStr(x+1))as TLabel).Caption:= 't';
for x := 0 to 6 do
if(FindComponent('Shape' + IntToStr(x+1))as TShape).Brush.Color = clGreen then
 (FindComponent('Label' + IntToStr(x+1))as TLabel).Caption:= 'u';
for x := 0 to 6 do
if(FindComponent('Shape' + IntToStr(x+1))as TShape).Brush.Color = clBtnFace then
 (FindComponent('Label' + IntToStr(x+1))as TLabel).Caption:= '';
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
inc(laufzeit);
Zuege.Caption :='Anzahl der Züge : ' + IntToStr(clicken);
Zeit.Caption :='Benötigte Zeit : '+sekToStr(laufzeit);
end;

procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if (FarbenWork[0] = clGreen)and (FarbenWork[1] = clBtnFace) then //nach rechts 1+
    begin
    FarbenWork[0]:= clBtnFace;
    FarbenWork[1]:= clGreen;
    if Timer1.Enabled = False then
    Timer1.Enabled := True;
    inc(clicken);
    end;
if (FarbenWork[0] = clGreen)and (FarbenWork[1] <> clBtnFace) and (FarbenWork[2] = clBtnFace) then //nach rechts 2+
    begin
    FarbenWork[2]:= clGreen;
    FarbenWork[0]:= clBtnFace;
    if Timer1.Enabled = False then
    Timer1.Enabled := True;
    inc(clicken);
    end;

neuzeichnen;
auswerten;
end;

procedure TForm1.Shape2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if (FarbenWork[1] = clGreen)and (FarbenWork[2] = clBtnFace) then //nach rechts 1+
    begin
    FarbenWork[1]:= clBtnFace;
    FarbenWork[2]:= clGreen;
    if Timer1.Enabled = False then
    Timer1.Enabled := True;
    inc(clicken);
    end;
if (FarbenWork[1] = clGreen)and (FarbenWork[2] <> clBtnFace) and (FarbenWork[3] = clBtnFace) then //nach rechts 2+
    begin
    FarbenWork[3]:= clGreen;
    FarbenWork[1]:= clBtnFace;
    if Timer1.Enabled = False then
    Timer1.Enabled := True;
    inc(clicken);
    end;
if (FarbenWork[1] = clRed)and (FarbenWork[0] = clBtnFace) then //nach links 1-
    begin
    FarbenWork[1]:= clBtnFace;
    FarbenWork[0]:= clRed;
    if Timer1.Enabled = False then
    Timer1.Enabled := True;
    inc(clicken);
    end;

neuzeichnen;
auswerten;

end;

procedure TForm1.Shape3MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if (FarbenWork[2] = clGreen)and (FarbenWork[3] = clBtnFace) then //nach rechts 1+
    begin
    FarbenWork[2]:= clBtnFace;
    FarbenWork[3]:= clGreen;
    if Timer1.Enabled = False then
    Timer1.Enabled := True;
    inc(clicken);
    end;
if (FarbenWork[2] = clGreen)and (FarbenWork[3] <> clBtnFace) and (FarbenWork[4] = clBtnFace) then //nach rechts 2+
    begin
    FarbenWork[4]:= clGreen;
    FarbenWork[2]:= clBtnFace;
    if Timer1.Enabled = False then
    Timer1.Enabled := True;
    inc(clicken);
    end;
if (FarbenWork[2] = clRed)and (FarbenWork[1] = clBtnFace) then //nach links 1-
    begin
    FarbenWork[2]:= clBtnFace;
    FarbenWork[1]:= clRed;
    inc(clicken);
    end;
if (FarbenWork[2] = clRed)and (FarbenWork[1] <> clBtnFace) and (FarbenWork[0] = clBtnFace) then //nach links 2+
    begin
    FarbenWork[0]:= clRed;
    FarbenWork[2]:= clBtnFace;
    if Timer1.Enabled = False then
    Timer1.Enabled := True;
    inc(clicken);
    end;

neuzeichnen;
auswerten;
end;

procedure TForm1.Shape4MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if (FarbenWork[3] = clGreen)and (FarbenWork[4] = clBtnFace) then //nach rechts 1+
    begin
    FarbenWork[3]:= clBtnFace;
    FarbenWork[4]:= clGreen;
    if Timer1.Enabled = False then
    Timer1.Enabled := True;
    inc(clicken);
    end;
if (FarbenWork[3] = clGreen)and (FarbenWork[4] <> clBtnFace) and (FarbenWork[5] = clBtnFace) then //nach rechts 2+
    begin
    FarbenWork[5]:= clGreen;
    FarbenWork[3]:= clBtnFace;
    if Timer1.Enabled = False then
    Timer1.Enabled := True;
    inc(clicken);
    end;
if (FarbenWork[3] = clRed)and (FarbenWork[2] = clBtnFace) then //nach links 1-
    begin
    FarbenWork[3]:= clBtnFace;
    FarbenWork[2]:= clRed;
    if Timer1.Enabled = False then
    Timer1.Enabled := True;
    inc(clicken);
    end;

if (FarbenWork[3] = clRed)and (FarbenWork[2] <> clBtnFace) and (FarbenWork[1] = clBtnFace) then //nach links 2+
    begin
    FarbenWork[1]:= clRed;
    FarbenWork[3]:= clBtnFace;
    if Timer1.Enabled = False then
    Timer1.Enabled := True;
    inc(clicken);
    end;

neuzeichnen;
auswerten;
end;

procedure TForm1.Shape5MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 if (FarbenWork[4] = clRed)and (FarbenWork[3] = clBtnFace) then //nach links 1-
    begin
    FarbenWork[4]:= clBtnFace;
    FarbenWork[3]:= clRed;
    if Timer1.Enabled = False then
    Timer1.Enabled := True;
    inc(clicken);
    end;
if (FarbenWork[4] = clRed)and (FarbenWork[3] <> clBtnFace) and (FarbenWork[2] = clBtnFace) then //nach links 2-
    begin
    FarbenWork[2]:= clRed;
    FarbenWork[4]:= clBtnFace;
    if Timer1.Enabled = False then
    Timer1.Enabled := True;
    inc(clicken);
    end;
if (FarbenWork[4] = clGreen)and (FarbenWork[5] = clBtnFace) then //nach rechts 1+
    begin
    FarbenWork[4]:= clBtnFace;
    FarbenWork[5]:= clGreen;
    if Timer1.Enabled = False then
    Timer1.Enabled := True;
    inc(clicken);
    end;

if (FarbenWork[4] = clGreen)and (FarbenWork[5] <> clBtnFace) and (FarbenWork[6] = clBtnFace) then //nach rechts 2-
    begin
    FarbenWork[6]:= clGreen;
    FarbenWork[4]:= clBtnFace;
    if Timer1.Enabled = False then
    Timer1.Enabled := True;
    inc(clicken);
    end;

neuzeichnen;
auswerten;
end;

procedure TForm1.Shape6MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 if (FarbenWork[5] = clRed)and (FarbenWork[4] = clBtnFace) then //nach links 1-
    begin
    FarbenWork[5]:= clBtnFace;
    FarbenWork[4]:= clRed;
    if Timer1.Enabled = False then
    Timer1.Enabled := True;
    inc(clicken);
    end;
if (FarbenWork[5] = clRed)and (FarbenWork[4] <> clBtnFace) and (FarbenWork[3] = clBtnFace) then //nach links 2-
    begin
    FarbenWork[3]:= clRed;
    FarbenWork[5]:= clBtnFace;
    if Timer1.Enabled = False then
    Timer1.Enabled := True;
    inc(clicken);
    end;
 if (FarbenWork[5] = clGreen)and (FarbenWork[6] = clBtnFace) then //nach rechts 1+
    begin
    FarbenWork[5]:= clBtnFace;
    FarbenWork[6]:= clGreen;
    if Timer1.Enabled = False then
    Timer1.Enabled := True;
    inc(clicken);
    end;

neuzeichnen;
auswerten;
end;

procedure TForm1.Shape7MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 if (FarbenWork[6] = clRed)and (FarbenWork[5] = clBtnFace) then //nach links 1-
    begin
    FarbenWork[6]:= clBtnFace;
    FarbenWork[5]:= clRed;
    if Timer1.Enabled = False then
    Timer1.Enabled := True;
    inc(clicken);
    end;
if (FarbenWork[6] = clRed)and (FarbenWork[5] <> clBtnFace) and (FarbenWork[4] = clBtnFace) then //nach links 2-
    begin
    FarbenWork[4]:= clRed;
    FarbenWork[6]:= clBtnFace;
    if Timer1.Enabled = False then
    Timer1.Enabled := True;
    inc(clicken);
    end;

neuzeichnen;
auswerten;
end;



end.
Angehängte Dateien
Dateityp: rar Frosch.rar (343,1 KB, 23x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Frosch hüpfen

  Alt 12. Mai 2012, 23:57
Ein Optimierungsvorschlag ..

Delphi-Quellcode:
unit Unit2;

interface

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

type
  TPosState = (psgreenDirR, psRedDirL, psEmpty);
  TPosArray = Array [0 .. 6] of TPosState;

  TForm2 = class(TForm)
    PaintBox1: TPaintBox;
    Button1: TButton;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure PaintBox1Paint(Sender: TObject);
    procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
    FPosArray: TPosArray;
    FZuege, FStart: Cardinal;
    procedure InitArray;
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

Procedure TForm2.InitArray;
var
  i: Integer;
begin
  Timer1.Enabled := False;
  Caption := '';
  FZuege := 0;
  FStart := 0;
  FPosArray[3] := psEmpty;
  for i := 0 to 2 do
  begin
    FPosArray[i] := psgreenDirR;
    FPosArray[4 + i] := psRedDirL;
  end;
  PaintBox1.Invalidate;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  InitArray;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  InitArray;
end;

procedure TForm2.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  idx: Integer;
  cnt: Integer;
begin
  idx := X div (PaintBox1.Width div 7);
  Timer1.Enabled := true;
  inc(FZuege);
  if FPosArray[idx] = psgreenDirR then
  begin
    if (idx < 6) and (FPosArray[idx + 1] = psEmpty) then
    begin
      FPosArray[idx + 1] := psgreenDirR;
      FPosArray[idx] := psEmpty;
      PaintBox1.Invalidate;
    end
    else if (idx < 5) and (FPosArray[idx + 2] = psEmpty) then
    begin
      FPosArray[idx + 2] := psgreenDirR;
      FPosArray[idx] := psEmpty;
      PaintBox1.Invalidate;
    end
  end
  else if FPosArray[idx] = psRedDirL then
  begin
    if (idx > 0) and (FPosArray[idx - 1] = psEmpty) then
    begin
      FPosArray[idx - 1] := psRedDirL;
      FPosArray[idx] := psEmpty;
      PaintBox1.Invalidate;
    end
    else if (idx > 1) and (FPosArray[idx - 2] = psEmpty) then
    begin
      FPosArray[idx - 2] := psRedDirL;
      FPosArray[idx] := psEmpty;
      PaintBox1.Invalidate;
    end
  end
end;

procedure TForm2.PaintBox1Paint(Sender: TObject);
var
  i: Integer;
  c: TCanvas;
  sgn: String;
  col: TColor;
  wd: Integer;
begin
  wd := PaintBox1.Width div 7;
  c := PaintBox1.Canvas;
  for i := 0 to 6 do
  begin
    case FPosArray[i] of
      psgreenDirR:
        begin
          col := clLime;
          sgn := '>';
        end;
      psRedDirL:
        begin
          col := clRed;
          sgn := '<';
        end;
    else
      begin
        col := Color;
        sgn := '';

      end;
    end;
    c.Brush.Style := bsSolid;
    c.Brush.Color := col;
    c.Rectangle(i * wd, 0, (i + 1) * wd, PaintBox1.Height);
    c.Brush.Style := bsClear;
    c.TextOut(i * wd, 0, sgn);
  end;
end;

Function Finished(Arr: TPosArray): Boolean;
begin
  Result := (Arr[0] = psRedDirL) and (Arr[1] = psRedDirL) and
    (Arr[2] = psRedDirL) and (Arr[4] = psgreenDirR) and (Arr[5] = psgreenDirR)
    and (Arr[6] = psgreenDirR);
end;

procedure TForm2.Timer1Timer(Sender: TObject);
begin
  if FStart = 0 then
    FStart := GetTickCount;
  if Finished(FPosArray) then
  begin
    Caption := Caption + ' FERTIG';
    Timer1.Enabled := False;
  end
  else
    Caption := Format('%d Züge in %d Sekunden',
      [FZuege, Round((GetTickCount - FStart) / 1000)]);
end;
end.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi (13. Mai 2012 um 07:58 Uhr)
  Mit Zitat antworten Zitat
borstenei

Registriert seit: 12. Nov 2011
121 Beiträge
 
#3

AW: Frosch hüpfen

  Alt 13. Mai 2012, 23:41
Danke Dir,
das sieht richtig gut aus!
Sauber strukturiert, übersichtlich ..das unterscheidet sich ja schon mal deutlich von meinem Kram.
Wobei ich gern mal die Diskussion anstoßen würde...ob nicht das Ergebnis entscheidend ist?
Ich selber schreibe Programme seit Anfang der 80 Jahre, damals noch auf dem C64..später Amiga und Anfang der 90er dann der PC .Da habe ich dann mit GFA Basic angefangen…für die damaligen Verhältnisse ein geniales Programm..(man konnte zb. Proceduren zusammenklappen was Delphi erst fast 20 Jahre später gelernt hat).Dann kam 1995 Delphi…das war es!
Seitdem bin ich Delphi treu geblieben, das programmieren ist bei nur Hobby !
Aber bei dem was ich mache merkt man eben auch immer wieder das ich nicht Informatik studiert habe, alles irgendwie auf das Ziel programmiert aber grundsätzliche Dinge nicht beachtet.
Einfach jetzt mal eine Frage…muss der Code genial sein? dafür aber die Oberfläche altbacken,unbedienbar..
Viele User hier haben auch einen Link zu ihrer HP eingestellt….es sind Leute dabei die immer wieder durch super,geniale Postings auffallen….schaut man dann auf die Software die sie versuchen zu verkaufen kann man nur die Hände über den Kopf zusammenschlagen..(Optik ala windows 3.11).
Daher hier die Frage ist meiner Software nicht egal ob sie besten OOP Regeln entspricht?
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Frosch hüpfen

  Alt 14. Mai 2012, 00:20
Zitat:
Aber hier stellt sich mir wieder mal die Frage ist das so effektiv was ich da mache...sicher der fertigen exe sieht man(n) das Ergebniss nicht an
aber hat das Hand und Fuss ?
Ich verbrauche hier unzählige Zeilen für die Auswertung...das sollte doch bestimmt auch anders gehen?
Ich hatte das so verstanden als ob Du Anregungen suchst ...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
relocate

Registriert seit: 26. Mai 2009
60 Beiträge
 
#5

AW: Frosch hüpfen

  Alt 14. Mai 2012, 08:13
[...]
Seitdem bin ich Delphi treu geblieben, das programmieren ist bei nur Hobby !
Aber bei dem was ich mache merkt man eben auch immer wieder das ich nicht Informatik studiert habe, alles irgendwie auf das Ziel programmiert aber grundsätzliche Dinge nicht beachtet.
Einfach jetzt mal eine Frage…muss der Code genial sein? dafür aber die Oberfläche altbacken,unbedienbar..
Viele User hier haben auch einen Link zu ihrer HP eingestellt….es sind Leute dabei die immer wieder durch super,geniale Postings auffallen….schaut man dann auf die Software die sie versuchen zu verkaufen kann man nur die Hände über den Kopf zusammenschlagen..(Optik ala windows 3.11).
Daher hier die Frage ist meiner Software nicht egal ob sie besten OOP Regeln entspricht?
Hallo,

ich bin Informatiker aus dem Bereich Administration, die Programmierung betreibe ich nur
um mir mein Leben als Admin zu erleichtern, weil ich mir dafür so manches Tool selbst schreibe.
Nebenbei habe ich auch Privat einige Aufgaben die Programme für mich lösen.
Man könnte bei mir also sagen, die Programmierung hat den Stellenwert eines Hobbies.

Die Programme funktionieren, sehen aber nicht unbedingt super aus.
Das ist mir allerdings nicht egal, denn nachdem sie funktionieren versuche ich den Code zu optimieren.
Das hat mehrere Gründe.

Optimierter Code ist meist besser verständlich, vor allem wichtig,
wenn das Programm später nochmal bearbeitet wird,
oder als Vorlage für andere Software dienen soll.
Wenn es also Vorlage für andere Software dienen soll, ist OOP sehr hilfreich.
Denn eine Idee hinter OOP ist die problemlose Wiederverwendbarkeit von Code.
Sauberer Code erzeugt auch bessere Programme.
Mein letztes Tool war alles andere als Effektiv.
Nach der Optimierung war es auf meinem Rechner um den Faktor 6 schneller.
Auf einem älteren PC sogar um den Faktor 20.

Folglich, es mag toll sein wenn deine Programme eine Optik wie für einen Mac bieten,
aber grottig langsam sind, oder wenn die Kunden deiner Software Erweiterungen wünschen
und Du dir dabei einen abbrichst, weil dein Code so ein Müll ist.

Folglich, beides ist zu beachten. Viele Programmierer sind aber keine Anwender und
da leidet dann manchmal die Useabilty, das haben viele noch nicht auf dem Schirm.
Zumal wichtiger ist, dass die Software erstmal das macht was sie soll.
Form follows Function.

Gruß relocate
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#6

AW: Frosch hüpfen

  Alt 14. Mai 2012, 09:57
Lieber Win 3.1, was sich aber sehr schnell über ein Manifest aufpeppen ließe, als der gescheiterte Versuch eine coolen Oberfläche hinzubekommen.
http://kryptochef.net/indexh2e.htm

Ich hab schon viele Programme gesehn, welche funkional überhaupt nichts hinbekommen haben, aber dafür supercool aussahn.
Mindestens 95% der Dateigröße gingen dann nur für die Skinengine und tausende mitgelieferte Skins drauf, dazu dann eventuell noch ein paar hundert MB an WAVEs,
aber der Code selber macht fast garnichts und das noch nichtmal richtig.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (14. Mai 2012 um 10:16 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.685 Beiträge
 
Delphi 2007 Enterprise
 
#7

AW: Frosch hüpfen

  Alt 14. Mai 2012, 10:11
Das ist der Hauptgrund, weshalb besonders in größeren Betrieben die UIs nicht von Informatikern, sondern Designern, Grafikern und teils sogar ganz speziellen darauf ausgerichteten UI Spezialisten erstellt wird (die teilweise nicht eine Zeile Code schreiben könnten).

Auch muss man stark bei der Zielgruppe und -setzung unterscheiden: Schreibe ich ein Tool, welches vorwiegend in Kreisen technisch gut ausgebildeter zum Einsatz kommt, so komme ich beim UI meist "einfacher" davon. Oftmals werden von "Kleinprogrammierern" auch Projekte, die als kleines Töölchen für einen selbst waren etwas aufgemöbelt und dann der Community bereit gestellt. Dass die Form aber ganz der Funktion folgt bzw. folgen kann/sollte ist ein Trugschluss bei kommerziellen Produkten für ein breites Publikum. Akzeptanz, usability und pures Eye-Candy spielen fast eine so große Rolle wie die Funktion an und für sich. Daher lohnt es sich ab einem gewissen Anspruch in der Tat dafür eine separate Abteilung mit Spezialisten zu haben, bzw. bei Kleinproduktionen mehr Aufwand da rein zu stecken.

Der "Idee", ob es nicht auch weniger optimierter Code tut, wenn er denn macht was er soll stehe ich auch eher nicht so offen gegenüber. Man tut damit niemandem einen Gefallen, da ggf. Ausführungsgeschwindigkeit, viel mehr aber noch Wartbarkeit sehr leiden. Das ergibt dann beim User lange/keine Updatezyklen, und bei einem selbst viel Tippen und suchen und versuchen zu verstehen, was zum Henker man sich seinerzeit mal bei Code "X" überhaupt gedacht hat, bzw. man sich in den Hintern beisst, dass man für die popeligsten Funktionsanpassungen in 7 Units 31 Prozeduren anpassen muss, die auch erstmal zu suchen sind, in den 5000 Zeilen pro Unit. Warum wöllte man sich sowas freiwillig antun, wenn alles was es kostet ein wenig Hirneinschaltung bei der ersten Erstellung ist?
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz