You are not logged in.

  • Login

1

Thursday, June 18th 2009, 10:53pm

Digitaluhr nach Systemzeit

hiho
ich hab ein problem mit der systemzeit. also mein vorhaben ist folgendes:
ich habe eine digitale uhr, die im moment nur als counter funktoiniert. jetzt will ich die aber zu ner uhr umfunktionieren, die nach der systemzeit läuft.
jetzt weiß ich aber nicht, wie ich an die einzelnen werte der uhrzeit kommen soll, weil ich für jede ziffer die zahl extra einstellen muss.
an das aktuelle datum komm ich ja durch

Java Quellcode

1
Date date = new Date();

mit den (leider als deprecated markierten) methoden

Java Quellcode

1
date.getHours();date.getMinutes();date.getSeconds();

komm ich an den aktuellen stunden, minuten und sekundenwert dran.
jetzt muss ich es allerdings schaffen, jede ziffer einzeln zu bekommen.
wenn die uhrzeit z.b. 23:43:21 ist, brauche ich die stunden nicht als 23, sondern als 2 und 3.
meine idee war, die zahlen einfach in einen string zu packen, so dass ich jeden wert einzeln durch

Java Quellcode

1
string.charAt(int position);

hohlen kann.
aber wie soll ich int in string konvertieren?!? ich bekomm dann immer fehlermeldungen wie icompatible types und dass das nicht konvertierbar ist -.-
kann mir wer weiterhelfen, oder ne bessere möglichkeit finden? der code der uhr ist dabei (die klasse Segment7 ist eig unwichtig, nur der vollständigkeit halber)

Java Quellcode

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
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
package PingPong;
 
 
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
 
 
/**
* Write a description of class Clock here.
* 
* @author (your name) 
* @version (a version number or a date)
*/
public class Clock{
 
 
public Thread th;
public JPanel panel;
public Segment7 ss1;
public Segment7 ss2;
public Segment7 sm1;
public Segment7 sm2;
public Segment7 sh1;
public Segment7 sh2;
 
 
public Clock(){
 
}
 
 
public JPanel fill(){
panel = new JPanel();
 
panel.setLayout(new FlowLayout(FlowLayout.CENTER));
 
sh2 = new Segment7();
panel.add(sh2);
sh1 = new Segment7();
panel.add(sh1);
 
panel.add(new Panel());
 
sm2 = new Segment7();
panel.add(sm2);
sm1 = new Segment7();
panel.add(sm1);
 
panel.add(new Panel());
 
ss2 = new Segment7();
panel.add(ss2);
ss1 = new Segment7();
panel.add(ss1);
 
return panel;
}
 
 
public void count(){
while(true){
 
if(sh1.getValue() == 9){
sh2.setValue(sh2.getValue() + 1);
}
if(ss1.getValue() == 9){
if(ss2.getValue() == 5){
if(sm1.getValue() == 9){
if(sm2.getValue() == 5){
sh1.setValue(sh1.getValue() + 1);
sm2.setValue(0);
sm1.setValue(0);
ss2.setValue(0);
ss1.setValue(0);
sleep(1000);
}
}
}
}
 
 
if(sm1.getValue() == 9){
sm2.setValue(sm2.getValue() + 1);
}
if(ss1.getValue() == 9){
if(ss2.getValue() == 5){
sm1.setValue(sm1.getValue() + 1);
ss2.setValue(0);
ss1.setValue(0);
sleep(1000);
}
}
 
 
if(ss1.getValue() == 9){
ss2.setValue(ss2.getValue() + 1);
}
ss1.setValue(ss1.getValue() + 1);
 
sleep(1000);
 
}
}
 
 
private void sleep(int millis){
try{
Thread.sleep(millis);
}
catch(InterruptedException e){
System.err.println(e.toString());
}
}
 
public void start(){
th = new Thread(new ClockRunnable());
th.start();
}
 
 
public static void main(String[] args){
JFrame f = new JFrame("Clock");
Container c = f.getContentPane();
Clock cl = new Clock();
c.add(cl.fill());
f.pack();
f.setVisible(true);
cl.start();
 
}
 
 
 
 
class ClockRunnable implements Runnable{
 
public void run(){
count();
}
 
}
 
 
 
}
 
 
 
 
 
/**
* 
* 
* @author JavaBook 33.2
* @version 1.1
*/
 
class Segment7 extends Canvas{
private int digit;
private boolean hasfocus;
private int[][] polysx = {
{ 1, 2, 8, 9, 8, 2}, //Segment 0
{ 9,10,10, 9, 8, 8}, //Segment 1
{ 9,10,10, 9, 8, 8}, //Segment 2
{ 1, 2, 8, 9, 8, 2}, //Segment 3
{ 1, 2, 2, 1, 0, 0}, //Segment 4
{ 1, 2, 2, 1, 0, 0}, //Segment 5
{ 1, 2, 8, 9, 8, 2}, //Segment 6
};
private int[][] polysy = {
{ 1, 0, 0, 1, 2, 2}, //Segment 0
{ 1, 2, 8, 9, 8, 2}, //Segment 1
{ 9,10,16,17,16,10}, //Segment 2
{17,16,16,17,18,18}, //Segment 3
{ 9,10,16,17,16,10}, //Segment 4
{ 1, 2, 8, 9, 8, 2}, //Segment 5
{ 9, 8, 8, 9,10,10}, //Segment 6
};
private int[][] digits = {
{1,1,1,1,1,1,0}, //Ziffer 0
{0,1,1,0,0,0,0}, //Ziffer 1
{1,1,0,1,1,0,1}, //Ziffer 2
{1,1,1,1,0,0,1}, //Ziffer 3
{0,1,1,0,0,1,1}, //Ziffer 4
{1,0,1,1,0,1,1}, //Ziffer 5
{1,0,1,1,1,1,1}, //Ziffer 6
{1,1,1,0,0,0,0}, //Ziffer 7
{1,1,1,1,1,1,1}, //Ziffer 8
{1,1,1,1,0,1,1} //Ziffer 9
};
 
public Segment7()
{
this(0);
}
 
public Segment7(int digit)
{
super();
this.digit = digit;
this.hasfocus = false;
}
 
public Dimension getPreferredSize()
{
return new Dimension(5*10,5*18);
}
 
public Dimension getMaximumSize()
{
return new Dimension(5*10,5*18);
}
 
public Dimension getMinimumSize()
{
return new Dimension(1*10,1*18);
}
 
public void paint(Graphics g)
{
Color darkblue = new Color(0,0,100);
Color lightblue = new Color(0,0,255);
//dx und dy berechnen
int dx = getSize().width / 10;
int dy = getSize().height / 18;
//Hintergrund
g.setColor(darkblue);
g.fillRect(0,0,getSize().width,getSize().height);
//Segmente
g.setColor(lightblue);
for (int i=0; i < 7; ++i) { //alle Segmente
if (digits[digit][i] == 1) {
Polygon poly = new Polygon();
for (int j = 0; j < 6; ++j) { //alle Eckpunkte
poly.addPoint(dx*polysx[i][j],dy*polysy[i][j]);
}
g.fillPolygon(poly);
}
}
//Trennlinien
g.setColor(darkblue);
g.drawLine(0,0,dx*10,dy*10);
g.drawLine(0,8*dy,10*dx,18*dy);
g.drawLine(0,10*dy,10*dx,0);
g.drawLine(0,18*dy,10*dx,8*dy);
}
 
public int getValue()
{
return digit;
}
 
public void setValue(int value)
{
digit = value % 10;
repaint();
}
 
}

2

Thursday, June 18th 2009, 11:18pm

also erstmal: Die Date-Methoden sind deprecated markiert, da man stattdessen die Calendar Klasse verwenden soll:

Java Quellcode

1
Calendar jetzt = GregorianCalendar.getInstance();

und dann zugriff mit

Java Quellcode

1
2
jetzt.get(Calendar.HOUR_OF_DAY);
jetzt.get(Calendar.MINUTE);

usw.

Und wie du an die einzlnen Ziffern einer Zahl kommst?

Java Quellcode

1
2
int zehner = zahl / 10;
int einer = zahl % 10;

gilt natürlich nur für Zahlen bis 100, aber das sollte bei Zeitangaben kein Problem darstellen ;)

3

Friday, June 19th 2009, 5:34pm

hi
jo danke, ich hab das jetzt entsprechend geändert und alles klappt. uhr läuft jetzt nach systemzeit, und das sogar ziemlich genau ;)
aber bei so vielen if-verschachtelungen verliert man irgendwann den durchblick :(
kann man das vllt auch einfacher machen? weil ich noch 3 dazu machen musste...
mfg

4

Friday, June 19th 2009, 7:43pm

Irgendwas schein ich falsch zu machen, ich brauch kein einziges if ;)

Java Quellcode

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
public void count()
{      	
	while (true)
	{
    	Calendar cal = GregorianCalendar.getInstance(Locale.getDefault());
 
    	int h1 = cal.get(Calendar.HOUR_OF_DAY)%10;
    	int h2 = cal.get(Calendar.HOUR_OF_DAY)/10;
 
    	sh1.setValue(h1);
    	sh2.setValue(h2);
 
    	int m1 = cal.get(Calendar.MINUTE)%10;
    	int m2 = cal.get(Calendar.MINUTE)/10;
 
    	sm1.setValue(m1);
    	sm2.setValue(m2);
 
    	int s1 = cal.get(Calendar.SECOND)%10;
    	int s2 = cal.get(Calendar.SECOND)/10;
 
    	ss1.setValue(s1);
    	ss2.setValue(s2);
 
    	sleep(1000);
 
	}
}


schöne Grüße aus München

5

Friday, June 19th 2009, 11:05pm

hm nagut, das is auch ne lösung :)
habs mal reingebastelt und funktioniert einwandfrei^^
jetzt muss ich das nur noch so machen, dass man beides verwenden kann, dann kann ich die uhr wahlweise auch als counter nutzen ;)
kannste mir da vllt ein tipp geben, wie man das am einfachsten macht? ;)

für beide arten von "zählen" ne methode oder wie? hab dazu ne variable systemTime eingebaut. wenn die true ist, wird nach systemzeit gezählt, wenn sie false ist, dient das ganze als stoppuhr.

Java Quellcode

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
188
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
 
 
/**
 * Write a description of class Clock here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Clock{
 
 
    public Thread th;
    public JPanel panel;
    public Segment7 ss1;
    public Segment7 ss2;
    public Segment7 sm1;
    public Segment7 sm2;
    public Segment7 sh1;
    public Segment7 sh2;
    private boolean systemTime;
    
    
    public Clock(boolean systemTime){
        this.systemTime = systemTime;
    }
    
    
    public JPanel fill(){
        panel = new JPanel();
        
        panel.setLayout(new FlowLayout(FlowLayout.CENTER));
        
        sh2 = new Segment7(2);
        panel.add(sh2);
        sh1 = new Segment7(4);
        panel.add(sh1);
        
        panel.add(new Panel());
        
        sm2 = new Segment7(5);
        panel.add(sm2);
        sm1 = new Segment7(9);
        panel.add(sm1);
        
        panel.add(new Panel());
        
        ss2 = new Segment7(3);
        panel.add(ss2);
        ss1 = new Segment7(5);
        panel.add(ss1);
        
        return panel;
    }
    
    
    public void tick(){
        
        while(systemTime == false){
            
            if(ss1.getValue() == 9){
                if(ss2.getValue() == 5){
                    if(sm1.getValue() == 9){
                        if(sm2.getValue() == 5){
                            if(sh1.getValue() == 9){
                                sh2.setValue(sh2.getValue() + 1);
                                sh1.setValue(0);
                                sm2.setValue(0);
                                sm1.setValue(0);
                                ss2.setValue(0);
                                ss1.setValue(0);
                                sleep(1000);
                            }
                        }
                    }
                }
            }
            if(ss1.getValue() == 9){
                if(ss2.getValue() == 5){
                    if(sm1.getValue() == 9){
                        if(sm2.getValue() == 5){
                            sh1.setValue(sh1.getValue() + 1);
                            sm2.setValue(0);
                            sm1.setValue(0);
                            ss2.setValue(0);
                            ss1.setValue(0);
                            sleep(1000);
                        }
                    }
                }
            }
            
            
            if(sm1.getValue() == 9){
                if(ss2.getValue() == 5){
                    if(ss1.getValue() == 9){
                        sm2.setValue(sm2.getValue() + 1);
                        sm1.setValue(0);
                        ss2.setValue(0);
                        ss1.setValue(0);
                        sleep(1000);
                    }
                }
            }
            if(ss1.getValue() == 9){
                if(ss2.getValue() == 5){
                    sm1.setValue(sm1.getValue() + 1);
                    ss2.setValue(0);
                    ss1.setValue(0);
                    sleep(1000);
                }
            }
            
            
            if(ss1.getValue() == 9){
                ss2.setValue(ss2.getValue() + 1);
            }
            ss1.setValue(ss1.getValue() + 1);
            
            sleep(1000);
            
        }
        
        
        
        while(systemTime){
            Calendar cal = GregorianCalendar.getInstance(Locale.getDefault());
 
            int h1 = cal.get(Calendar.HOUR_OF_DAY)%10;
            int h2 = cal.get(Calendar.HOUR_OF_DAY)/10;
        
            sh1.setValue(h1);
            sh2.setValue(h2);
 
            int m1 = cal.get(Calendar.MINUTE)%10;
            int m2 = cal.get(Calendar.MINUTE)/10;
 
            sm1.setValue(m1);
            sm2.setValue(m2);
 
            int s1 = cal.get(Calendar.SECOND)%10;
            int s2 = cal.get(Calendar.SECOND)/10;
 
            ss1.setValue(s1);
            ss2.setValue(s2);
 
            sleep(1000);
        }
        
        
        
    }
    
    
    private void sleep(int millis){
        try{
            Thread.sleep(millis);
        }
        catch(InterruptedException e){
            System.err.println(e.toString());
        }
    }
    
    public void start(){
        th = new Thread(new ClockRunnable());
        th.start();
    }
    
    
    public void stop(){
        th.interrupt();
    }
    
    
    public static void main(String[] args){
        JFrame f = new JFrame("Clock");
        Container c = f.getContentPane();
        Clock cl = new Clock(true);
        c.add(cl.fill());
        f.pack();
        f.setVisible(true);
        cl.start();
        
    }
}


mfg

This post has been edited 2 times, last edit by "DarthMaul" (Jun 19th 2009, 11:28pm)


6

Saturday, June 20th 2009, 2:30am

Klar kann ich dir da auch helfen. Machen wir mal wieder eine kleine Nachhilfestunde hier in Sachen Software-Design. Zerlegen wir mal dein Problem logisch. Also du willst deine Uhr die du gleichzeitig auch als Counter verwenden willst, die Darstellung soll gleich bleiben, aber die Logik soll änderbar sein. Ok dann bauen wir eine Komponente, die nur die Darstellung übernimmt. Dazu nehmen wir einfach deine Klasse Clock.

So ganz in Ordnung ist sie zwar auch nicht, aber für unsere Zwecke reichts aus und wenn ich den Rest noch verbessern würde, führt das an dieser Stelle zu weit.

Als erstes schmeiß mal den Thread und die beiden Methode die die Logik zum Zeitberechnen verwenden raus. Dafür kommt eine Methode setValues(int hours, int minutes, int seconds) rein.

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
public void setValues(int hours, int minutes, int seconds)
{
  sh1.setValue(hours % 10);
  sh2.setValue(hours/10);
 
  sm1.setValue(minutes % 10);
  sm2.setValue(minutes/10);
 
  ss1.setValue(seconds % 10);
  ss2.setValue(seconds/10);
}


Soweit so gut, jetzt nimmt Clock irgendwelche Werte entgegen und stellt sie dar aber es ist ihr egal welche Werte das sind. Natürlich brauchen wir jetzt zwei Klassen für die Logik, einmal als Uhr und einmal als Counter.

Zuerst mal die Uhr:

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Uhr implements Runable
{
   private Clock clock;
 
   public Uhr(Clock clock)
   {
   	this.clock = clock;
   }
 
   public void run()
   {
  	while(true)
   	{
        	Calendar cal = GregorianCalendar.getInstance();
        	clock.setValues(cal.get(Calendar.HOUR_OF_DAY),cal.get(Calendar.MINUTE),cal.get(Calendar.SECOND));
        	Thread.sleep(1000);
   	}
   }
}


Ich verkürz den Code ein bisschen ist schon spät aber das Grundprinzip sollte klar werden. Als nächstes bauen wir den Counter:

Java Quellcode

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
public class Counter implements Runable
{
   private Clock clock;
   private int seconds=0;
 
   public Counter(Clock clock)
   {
   	this.clock = clock;
   }
 
   public void run()
   {
  	while(true)
   	{
 
        	int s = seconds % 60;
        	int h = seconds/(60*60);
        	int m = seconds/60-h*60;
 
        	clock.setValues(h,m,s);
        	seconds++;
         	Thread.sleep(1000);
    	}
    }
}


Die Berechnung müsste stimmen aber da bin ich mir nicht 100% sicher, aber das ist ja auch nicht das Thema.

So als letztes zur Verwendung des ganzen:

Java Quellcode

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
public class Test
{
	public static void main(String[] args)
	{
     	JFrame frame = new JFrame();
     	Clock c1 = new Clock();
     	Clock c2 = new Clock();
 
     	JPanel cp1 = c1.fill();
     	JPanel cp2 = c2.fill();
 
     	frame.add(cp1, BorderLayout.NORTH);
     	frame.add(cp2, BorderLayout.SOUTH);
 
     	frame.pack();
 
     	Thread uhrenThread = new Thread(new Uhr(c1));
     	Thread counterThread = new Thread(new Counter(c2));
 
     	uhrenThread.start();
     	counterThread.start();
 
     	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     	frame.setVisible(true);
  	}
}


Jetzt sind wir damit fertig. Das ganze läuft unter dem Begriff "Seperation of concerns" zu deutsch so viel wie Trennung von Zuständigkeit.

Ich arbeite eigentlich immer so, dass ich mir zuerst überlege welche Beteiligte es bei einem Problem geben könnte, dabei denk ich eigentlich noch nicht mal in Klassen sondern stell mir vor, welche Aufgaben es gibt um ein Problem zu lösen und wie man dieses geschickt aufteilen könnte. Wenn der Schritt getan ist, ist der Rest dann relativ einfach; zuerst überleg ich wie die Teile sich gegenseitig verwenden und zwar sollten diese Berührungspunkte so schlank wie möglich sein. In dem Fall wäre es ungeschickt eine setHours(int h) setMinutes(int m) setSeconds(int s) zu machen, weil die Methoden eh immer in der gleichen Reihenfolge aufgerufen werden würden, also fass ich sie gleich zusammen.
Der Rest ist reine Programmierarbeit und ab da recht unspannend. Dennoch ist es der wichtigste Teil des Ganzen: 1. Werd ich für das Ergebnis bezahlt und 2. macht es einen stolz wenn man sieht, dass das was man sich überlegt hat auch funktioniert.

so genug für heute.
mfg

7

Saturday, June 20th 2009, 12:06pm

wow cool^^
vielen dank erst mal für die mühe :)
das ist genau das, was wir in der schule immer nicht machen. da lernen wir alles mögliche an methoden und so, aber wie man hinterher sowas plant und konzipiert, ham wir so noch nie besprochen.
einbauen werd ich da allerdings erst heut abend oder so, weil ich mittags weg bin ;)
mfg

8

Saturday, June 20th 2009, 4:41pm

Naja es ist auch irgendwie verständlich, dass dein Lehrer dir "nur" die Methoden beibringt, ich will ja nicht kritisieren und ich weiß auch nicht auf welche Schule du gehst, aber ich geh mal davon aus, dass dein Lehrer selbst auch noch nicht professionell Software entwickelt hat. Das Ganze hat sehr viel mit Erfahrung zu tun und solche Sachen hab ich auch erst durch mein Studium gelernt. Richtig Gedanken darüber hab ich mir erst bei meiner Diplomarbeit gemacht. Aber seh es einfach so, du lernst jetzt in der Schule den Werkzeugkasten kennen, ein Bild wirst du auch nicht aufhängen können wenn dir keiner erklärt hat wie ein Hammer funktioniert.

Aber eins ist mir noch aufgefallen. Die stop-Methode in deiner Uhr wird deine Uhr nicht stoppen. Thread#stop() ist zu Recht deprecated aber interrupt führt dich nicht zum Ziel. Interrupt holt Threads zurück die schlafen oder in einem wait-Block stecken aber stopt sie nicht. Es gibt einen Spruch dazu. "Threads sollten nicht gekillt, sondern in den Selbstmord getrieben werden."

Das geht so: definiere eine boolean-Variable in deinem Runnable die true ist. Die Schleife die läuft lautet nicht mehr while(true) sondern prüft auf diese Variable. Dein Runnable bekommt noch eine Methode stop in der deine Variable auf false gesetzt wird.

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Uhr implements Runnable
{
	private boolean laeuft = true; //deine Variable zum stoppen
	...
	public Uhr(Clock c)
	{
   	....
	}
 
	public void run()
	{
   	while(laeuft) //hier wird geschaut ob die Uhr noch läuft
   	{
      	...
   	}
	}
 
   public void stop()
   {
   	laeuft = false; //jetzt hört die Uhr auf zu laufen
   }
}


So ich hoffe du kommst nun zu deinem Ziel.

mfg

9

Saturday, June 20th 2009, 6:44pm

ziel erreicht ;) noch mals danke.
ja ok dass unsere lehrerein nicht professionell programmiert und deshalb nicht perfekt ist nehmich ihr auch nicht übel. aber sie will uns immer unterstützen (meinen freund und mich), weil wir den werkzeugkasten etwas besser kennen als die anderen :p nur wäre es halt schön wenn wir in solchen sachen unterstützung bekommen würden.
aber jetzt klappt ja alles^^
mfg

Social bookmarks