Entwickler-Ecke

Freeware Projekte - 1. Programm: Sylsta


Sylvus - Mi 27.02.08 19:21
Titel: 1. Programm: Sylsta
Hi, hab seit einer Woche Delphi in der Schule und hab ein kleines Programm geschrieben. Nichts großes, aber man hat ja gerne Kritik. Was das Programm kann, steht eigentlich alles da, darum hier der Link und viel Spaß.

http://home.arcor.de/jsprengel/Sylsta.exe

Für Kritik immer zu haben =)
Viele Grüße Sylvus (Sylvus-Statistiks)

/edit

Mit dem Programm ist es möglich aus einer Reihe Ergebnisse den:
-Mittelwert
-die empirische Varianz
-die Standardabweichung
-Quartilsabstand
-Median
-das erstes Quartil
-das zweites Quartil
sowie die absolute und relative Häufigkeit herauszubekommen.

Screenshoot:

http://home.arcor.de/jsprengel/sylsta.PNG

Funktionsweise:
Auf start drücken, die gesamte Anzahl eingeben und dann jeden einzelnen Wert.

Known Bug:
Bei einer Anzahl von über 100 Werten stürzt das Programm manchmal ab.

------
/edit2 Der Code:

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:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
unit design;

interface

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

type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image5: TImage;
    Image4: TImage;
    Edit1: TEdit;
    Button1: TButton;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Image6: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    ListBox1: TListBox;
    ListBox2: TListBox;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    ListBox3: TListBox;
    ListBox4: TListBox;
    procedure Image3MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button1Click(Sender: TObject);
    procedure Image1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Image1Click(Sender: TObject);
begin
Image1.Transparent:=true;
    close;
end;

procedure TForm1.Image3MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Form1.Perform(WM_SYSCOMMAND, $f0120);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
MyArray: array of integer;
a,b: string;
bi, i, j, k,me1,a1,a2,m,me3,i1,qme1,qme3,r: LongInt;
m1,me2,me,em,st,me025,qme2,me075,meq,r1:real;
i2:boolean;
h: Word;
// Daten einlesen
begin
me025:=0;i1:=0; bi:=0; i:=0; j:=0; k:=0; me:=0; a1:=0; a2:=0; m:=0; me3:=0; m1:=0; me2:=0; me:=0; em:=0; st:=0;
  a := InputBox('Wie viel Daten sind vorhanden?''''');
  a1:=strtoint(a);
  SetLength(MyArray,a1);
  for i:=1 to a1 do
  begin
   b := InputBox('Die Daten bitte jeweils mit Enter bestätigen''''');
   m:=strtoint(b)+m;
   MyArray[i-1]:=strtoint(b);
  end;
    m1:=(m/a1);
 // sortieren
 for i:=1 to a1 do
 begin

 for i1:=0 to a1-1 do
 begin
  repeat
  i2:=false;
 if MyArray[i1]>MyArray[i1+1then
 begin
      h := MyArray[i1];
      MyArray[i1] := MyArray[i1+1];
      MyArray[i1+1] := h;
      i2:=true;
 end;
   until i2=false;
 end;
 end;


//absolute Häufigkeit
bi := a1;
i:=0;
Listbox1.Items.clear;
Listbox2.Items.clear;
Listbox3.Items.clear;
Listbox4.Items.clear;
while i<bi do
  begin
   r:=1;
     while MyArray[i]=MyArray[i+r] do
     begin
      r:=r+1;
      end;
  Form1.ListBox1.Items.Add(inttostr(MyArray[i]));
  Form1.ListBox3.Items.Add(inttostr(MyArray[i]));
  Form1.ListBox2.Items.Add(inttostr(r));
  r1:=r/a1;
  Form1.ListBox4.Items.Add(floattostr(r1));
  i:=i+r;
end;

//Median
me1 := (a1 DIV 2)-1;
me2 := (a1/2)-1;
if me1=me2 then
begin
me3:=me1+1;
me:=(MyArray[me1]+MyArray[me3])/2;
end
else
me:=(MyArray[me1+1]);
  //Quartiel025sabstand
qme1 := (a1 DIV 4)-1;
qme2 := (a1/4)-1;
if me1=me2 then
begin
qme3:=qme1+1;
me025:=(MyArray[qme1]+MyArray[qme3])/2;
end
else
me025:=(MyArray[qme1+1]);
  //Quartiel075sabstand
me1 := Trunc((3*a1/4))-1;
me2 := (3*a1/4)-1;
if me1=me2 then
begin
me3:=me1+1;
me075:=(MyArray[me1]+MyArray[me3])/2;
end
else
me075:=(MyArray[me1+1]);

meq:=me075-me025;

//empirische Varianz
i:=0;
i1:=0;
em:=0;
for i:=1 to a1 do
begin
em:=em+(Sqr((MyArray[i1]-m1)));
i1:=i1+1;
end;
em:=em/a1;
//Standardabweichung
 st:=sqrt(em);
  // Daten ausgeben
  edit1.Text:=floattostr(m1);
  edit2.Text:=floattostr(me);
  edit3.Text:=floattostr(st);
  edit4.Text:=floattostr(meq);
  edit5.Text:=floattostr(em);
  edit6.Text:=floattostr(me025);
  edit7.Text:=floattostr(me075);

end;
end.


Viele Grüße Sylvus


Marc. - Mi 27.02.08 19:32

Könntest Du bitte eine kurze Beschreibung hinzufügen, um was für ein Programm es sich hier überhaupt handelt. Desweiteren wäre ein Screenshot wünschenswert.

Grüße
Marc.


pART - So 02.03.08 16:01

Hey,
einfaches Programm, aber für die erste Woche echt richtig richtig geil. Aber was mich viel mehr interessiert ist das Design: Wie Hast du das gemacht, dass der Schriftzug "Webagent.eu" ausgeschnitten ist? Also das man das sieht was da unter ist?

Kannst du mir das mitteilen ?

MFG
Niklas


Sylvus - So 02.03.08 21:52

hey, danke für die positive Kritik, das mit dem Schriftzug ist ganz einfach. Ich hab gelesen, dass man bei der Form eine Farbe auswählen kann die transparent sein soll. Dort hab ich weiß genommen und dann einen weißen Schriftzug/Bild eingefügt. Du musst nur aufpassen weil, wenn du es so machst wirklich alles was weiß ist durchsichtig wird, auch die Buttons... :) schöne Spielerei am Anfang.

Hier das Zitat aus http://www.free-hack.com/viewtopic.php?t=49788

Du kannst im objekteditor den rahmen einer form entfernen, dann kannst du das TImage verwenden um das design aus grafiken zusammenbasteln, du kannst eine farbe als transparent definieren so das du auch die runden ecken hinbekommst.

du wirst merken das du die form nicht mehr durch die gegend ziehen kannst, das kannst du ändern in dem du folgenden code in die onmousedown prozedur eines objektes wie z.B. den grafiken schreibst: Code:

Delphi-Quelltext
1:
2:
ReleaseCapture; 
SendMessage(Form1.Handle, WM_SYSCOMMAND, 614580);


denke das wird dir erstmal weiterhelfen...


Viel Spass, Grüße Sylvus


Regan - So 02.03.08 22:06

user profile iconSylvus hat folgendes geschrieben:
Hier das Zitat aus http://www.free-hack.com/viewtopic.php?t=49788

Du kannst im objekteditor den rahmen einer form entfernen, dann kannst du das TImage verwenden um das design aus grafiken zusammenbasteln, du kannst eine farbe als transparent definieren so das du auch die runden ecken hinbekommst.

du wirst merken das du die form nicht mehr durch die gegend ziehen kannst, das kannst du ändern in dem du folgenden code in die onmousedown prozedur eines objektes wie z.B. den grafiken schreibst: Code:

Delphi-Quelltext
1:
2:
ReleaseCapture; 
SendMessage(Form1.Handle, WM_SYSCOMMAND, 614580);


denke das wird dir erstmal weiterhelfen...


*räusper: http://www.delphi-forum.de/viewtopic.php?p=482129#482129 :wink: .


dummzeuch - Mo 03.03.08 22:00
Titel: Re: 1. Programm: Sylsta
user profile iconSylvus hat folgendes geschrieben:
Hi, hab seit einer Woche Delphi in der Schule und hab ein kleines Programm geschrieben. Nichts großes, aber man hat ja gerne Kritik.


Wenn Du aus der Kritik was lernen willst, poste doch auch mal den Sourcecode.

twm