|
Antwort |
Registriert seit: 12. Nov 2011 121 Beiträge |
#1
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. |
Zitat |
Registriert seit: 15. Jun 2010 Ort: Augsburg Bayern Süddeutschland 3.470 Beiträge Delphi XE3 Enterprise |
#2
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) |
Zitat |
Registriert seit: 12. Nov 2011 121 Beiträge |
#3
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? |
Zitat |
Registriert seit: 15. Jun 2010 Ort: Augsburg Bayern Süddeutschland 3.470 Beiträge Delphi XE3 Enterprise |
#4
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?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren DRY DRY KISS H₂♂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL) |
Zitat |
Registriert seit: 26. Mai 2009 60 Beiträge |
#5
[...]
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? 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 |
Zitat |
Registriert seit: 11. Okt 2003 Ort: Elbflorenz 44.033 Beiträge Delphi 12 Athens |
#6
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) |
Zitat |
Registriert seit: 23. Jan 2008 3.685 Beiträge Delphi 2007 Enterprise |
#7
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)
|
Zitat |
Ansicht |
Linear-Darstellung |
Zur Hybrid-Darstellung wechseln |
Zur Baum-Darstellung wechseln |
ForumregelnEs 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
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
LinkBack URL |
About LinkBacks |