Autor Beitrag
Sylvus
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 195



BeitragVerfasst: Mi 27.02.08 19:21 
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ß.

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:

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:
ausblenden volle Höhe 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


Zuletzt bearbeitet von Sylvus am Do 06.03.08 01:39, insgesamt 2-mal bearbeitet
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 195



BeitragVerfasst: 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 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:
ausblenden Delphi-Quelltext
1:
2:
ReleaseCapture; 
SendMessage(Form1.Handle, WM_SYSCOMMAND, 614580);


denke das wird dir erstmal weiterhelfen...


Viel Spass, Grüße Sylvus
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: So 02.03.08 22:06 
user profile iconSylvus hat folgendes geschrieben:
Hier das Zitat aus 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:
ausblenden Delphi-Quelltext
1:
2:
ReleaseCapture; 
SendMessage(Form1.Handle, WM_SYSCOMMAND, 614580);


denke das wird dir erstmal weiterhelfen...


*räusper: www.delphi-forum.de/....php?p=482129#482129 :wink: .
dummzeuch
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 593
Erhaltene Danke: 5


Delphi 5 ent, Delphi 6 bis Delphi XE8 pro
BeitragVerfasst: Mo 03.03.08 22:00 
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