/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Simon vs. OverMagten...[autonummerering].
Fra : Simon...


Dato : 23-08-02 17:01

Hejsa,

Så er det sket igen.... jeg har et problem.. denne gang mener mine lærere
godt nok det ikke kan løses, men jeg ville nu spørge jer alligevel, da i for
det meste, lyder somom i ved mere end dem :)

hvis nu, jeg har en klasse med en main, og en klasse, fx. bil, og jeg gerne
vil have noget autonummerering på obj numrene, then how to do it ??:



main:

Bil bil.autoNummerering() = new Bil("750 hk", "blå");




kan man så ikke lave en metode i klassen Bil, der kan give mig noget
autonummerering, jeg var ude i noget lign. det her:




Bil:

private int nummer = 1;
private String hovedDel = new String("BilNr");

public String autoNummerering()
{
String report = new String(hovedDel);
report += nummer;
nummer++;

return report;
}




så ville jeg have mine obj, kom til at hede noget henad: "BilNr1",
"BilNr2"....

jeg kan godt se problemet i at jeg returnerer en String, som skal være
navnet, men kan det ikke afhjælpes ?
- hvis jeg ikke vil lægge mine objekter i et array... .?


Nu har jeg prøvet at finde en løsning i nogle dage før jeg spurgte mine
lærere, men nu synes jeg at være løbet ind i en mur.... en stor en.. kunne
ikke engang finde noget på google :((



1000 tak

mvh.Simon





 
 
Michael Banzon (23-08-2002)
Kommentar
Fra : Michael Banzon


Dato : 23-08-02 17:18

Jeg ved ikke lige helt...
Du kunne lave en klasse (nogenlunde) sådan her:

public class Bil {
   public static int num;

   private String s1;
   private String s2;
   private String nummer;

   public Bil(String str1, String str2) {
      s1 = str1;
      s2 = str2;
      nummer = new String("BilNr" + new                      Integer(num++).toString());
   }

   public static initBiler() {
      num=1;
   }
}

så skal du bare kalde Bil.initBiler() en enkelt gang, så er du klar til
at lave nye autonummererede Bil-objekter (der er muligvis nogle
Exceptions der skal catches??)...

jeg har ikke testet det, men mener at det burde virke?? hvad siger i
andre??

/ Michael


Simon... wrote:
> Hejsa,
>
> Så er det sket igen.... jeg har et problem.. denne gang mener mine lærere
> godt nok det ikke kan løses, men jeg ville nu spørge jer alligevel, da i for
> det meste, lyder somom i ved mere end dem :)
>
> hvis nu, jeg har en klasse med en main, og en klasse, fx. bil, og jeg gerne
> vil have noget autonummerering på obj numrene, then how to do it ??:
>
>
>
> main:
>
> Bil bil.autoNummerering() = new Bil("750 hk", "blå");
>
>
>
>
> kan man så ikke lave en metode i klassen Bil, der kan give mig noget
> autonummerering, jeg var ude i noget lign. det her:
>
>
>
>
> Bil:
>
> private int nummer = 1;
> private String hovedDel = new String("BilNr");
>
> public String autoNummerering()
> {
> String report = new String(hovedDel);
> report += nummer;
> nummer++;
>
> return report;
> }
>
>
>
>
> så ville jeg have mine obj, kom til at hede noget henad: "BilNr1",
> "BilNr2"....
>
> jeg kan godt se problemet i at jeg returnerer en String, som skal være
> navnet, men kan det ikke afhjælpes ?
> - hvis jeg ikke vil lægge mine objekter i et array... .?
>
>
> Nu har jeg prøvet at finde en løsning i nogle dage før jeg spurgte mine
> lærere, men nu synes jeg at være løbet ind i en mur.... en stor en.. kunne
> ikke engang finde noget på google :((
>
>
>
> 1000 tak
>
> mvh.Simon
>
>
>
>


Ulrik Magnusson (23-08-2002)
Kommentar
Fra : Ulrik Magnusson


Dato : 23-08-02 18:01

"Simon..." wrote:

> Hejsa,
>
> Så er det sket igen.... jeg har et problem.. denne gang mener mine lærere
> godt nok det ikke kan løses, men jeg ville nu spørge jer alligevel, da i for
> det meste, lyder somom i ved mere end dem :)
>
> hvis nu, jeg har en klasse med en main, og en klasse, fx. bil, og jeg gerne
> vil have noget autonummerering på obj numrene, then how to do it ??:
>
> main:
>
> Bil bil.autoNummerering() = new Bil("750 hk", "blå");
>
> kan man så ikke lave en metode i klassen Bil, der kan give mig noget
> autonummerering, jeg var ude i noget lign. det her:
>
> Bil:
>
> private int nummer = 1;
> private String hovedDel = new String("BilNr");
>
> public String autoNummerering()
> {
> String report = new String(hovedDel);
> report += nummer;
> nummer++;
>
> return report;
> }
>
> så ville jeg have mine obj, kom til at hede noget henad: "BilNr1",
> "BilNr2"....

Måske noget i denne retning:

class Bil
{
private static int idCount = 1;//tæller på klassen
private int id = idCount++;// giv et id og inkrementer klassevariablen ved
konstruktion
private String name = "Bil nr. ";
Bil()
{
name += id;
}
String getName()
{
return name;
}
}

Spørgsmålet er så måske om
private int id = idCount++;// giv et id og inkrementer klassevariablen ved
konstruktion
er trådsikker?

Ulrik Magnusson


Dennis B. Hansen (26-08-2002)
Kommentar
Fra : Dennis B. Hansen


Dato : 26-08-02 10:08

Tjoo... Increment (optælling) af en int variable er trådsikker, så du
vil ikke få biler med samme numre. Altså med mindre du lukker
applikationen ned og starter den op igen, for både din (Ulrik) og
Michael Banzons løsning lider af samme problem; at de kun tæller op
for en applikations kørsel af gangen. Problemet kan dog hurtigt løses
ved at gemem "tælleren" i en fil/database.

Men det er også lige meget... Synes bare lige jeg ville sige lidt om
"static", da den statiske variabel ikke er forklaret i nogen af jeres
indlæg.

Static variable og metoder kaldes også "klasse variable/metoder", da
man kan operere med den uafhængigt af de enkelte instancer af klassen
(objekter). Det bevirker i begge eksempler at man kan lave en tæller
der holder styr på hvor mange objekter der er lavet af en klasse,
hvilket jo basalt set er det der er behov for i Simons spørgsmål.

Hygge
/Dennis

On Fri, 23 Aug 2002 19:00:49 +0200, Ulrik Magnusson <ulrikm@yahoo.com>
wrote:

>"Simon..." wrote:
>
>> Hejsa,
>>
>> Så er det sket igen.... jeg har et problem.. denne gang mener mine lærere
>> godt nok det ikke kan løses, men jeg ville nu spørge jer alligevel, da i for
>> det meste, lyder somom i ved mere end dem :)
>>
>> hvis nu, jeg har en klasse med en main, og en klasse, fx. bil, og jeg gerne
>> vil have noget autonummerering på obj numrene, then how to do it ??:
>>
>> main:
>>
>> Bil bil.autoNummerering() = new Bil("750 hk", "blå");
>>
>> kan man så ikke lave en metode i klassen Bil, der kan give mig noget
>> autonummerering, jeg var ude i noget lign. det her:
>>
>> Bil:
>>
>> private int nummer = 1;
>> private String hovedDel = new String("BilNr");
>>
>> public String autoNummerering()
>> {
>> String report = new String(hovedDel);
>> report += nummer;
>> nummer++;
>>
>> return report;
>> }
>>
>> så ville jeg have mine obj, kom til at hede noget henad: "BilNr1",
>> "BilNr2"....
>
>Måske noget i denne retning:
>
>class Bil
>{
> private static int idCount = 1;//tæller på klassen
> private int id = idCount++;// giv et id og inkrementer klassevariablen ved
>konstruktion
> private String name = "Bil nr. ";
> Bil()
> {
> name += id;
> }
> String getName()
> {
> return name;
> }
>}
>
>Spørgsmålet er så måske om
> private int id = idCount++;// giv et id og inkrementer klassevariablen ved
>konstruktion
> er trådsikker?
>
>Ulrik Magnusson
>


Ulrik Magnusson (26-08-2002)
Kommentar
Fra : Ulrik Magnusson


Dato : 26-08-02 15:52



"Dennis B. Hansen" wrote:

> Tjoo... Increment (optælling) af en int variable er trådsikker, så du
> vil ikke få biler med samme numre.

inc er rigtignok trådsikker, men man skal jo have fat i variablen og
gemme den igen - så nej.

Ulrik Magnusson




Ulrik Magnusson (26-08-2002)
Kommentar
Fra : Ulrik Magnusson


Dato : 26-08-02 15:57



Ulrik Magnusson wrote:

> "Dennis B. Hansen" wrote:
>
> > Tjoo... Increment (optælling) af en int variable er trådsikker, så du
> > vil ikke få biler med samme numre.
>
> inc er rigtignok trådsikker,

Sikke da noget sludder - increment er overhovedet ikke trådsikker.

Ulrik Magnusson



Ulrik Magnusson (26-08-2002)
Kommentar
Fra : Ulrik Magnusson


Dato : 26-08-02 18:35



Ulrik Magnusson wrote:

> Ulrik Magnusson wrote:
>
> > "Dennis B. Hansen" wrote:
> >
> > > Tjoo... Increment (optælling) af en int variable er trådsikker, så du
> > > vil ikke få biler med samme numre.
> >
> > inc er rigtignok trådsikker,
>
> Sikke da noget sludder - increment er overhovedet ikke trådsikker.

Jeg diskuterer lige med mig selv.. Man kunne måske forestille sig
følgende (fejlagtige) konstruktion:

class a
{
private int member = 0;

void incMember()
{
int local = member;
synchronized( this )//meningsløs synkronisering, da "i++" er atomisk
{
local++;
}
this.member = local;
}
}

På den måde er increment måske trådsikker, men jeg kan ikke se
en situation hvor man ikke er nødt til at synkronisere omkring den
alligevel.

Ulrik Magnusson


Jan Jonasen (26-08-2002)
Kommentar
Fra : Jan Jonasen


Dato : 26-08-02 18:54

In article <3D6A66BD.A92815A5@yahoo.com>, Ulrik Magnusson
(ulrikm@yahoo.com) wrote:
> Jeg diskuterer lige med mig selv.. Man kunne måske forestille sig
> følgende (fejlagtige) konstruktion:
>
> class a
> {
> private int member = 0;
>
> void incMember()
> {
> int local = member;
> synchronized( this )//meningsløs synkronisering, da "i++" er atomisk
> {
> local++;
> }
> this.member = local;
> }
> }
>
> På den måde er increment måske trådsikker, men jeg kan ikke se
> en situation hvor man ikke er nødt til at synkronisere omkring den
> alligevel.
>
En mere elegant løsning ville være blot at erklære member som:

private volatile int member; //nul er default, spar 4 tastetryk

volatile garantere at man altid får seneste værdi, således ville en
eventuel getMember() metode ikke returnere en "forkert" værdi. JLS 2.0
8.3.2 forklare det bedre end jeg, ca. side 158.

--
Mvh/re Jan Jonasen
jonasen (at) it (dot) dk

If I wanted culture, I'd eat yogurt.

Ulrik Magnusson (26-08-2002)
Kommentar
Fra : Ulrik Magnusson


Dato : 26-08-02 19:52

Jan Jonasen wrote:

> private volatile int member; //nul er default, spar 4 tastetryk

Min mistanke er umiddelbart at man har glemt at initialisere og jeg
begynder at spilde tid på at undersøge om det skulle have nogen
betydning.

Jeg ved ikke rigtig om volatile er en god idé (først og fremmest
er det lidt svært at gennemskue ):

volatile static int idCount = 0;
int id = idCount++; // er hele denne atomisk pga volatile eller er det
// udelukkende inkrementeringen af idCount?

T1: inkrementer idCount
T2: inkrementer idCount
T2: skriv id // med hvilken værdi?
T1: skriv id // med hvilken værdi?

Ulrik Magnusson



Jan Jonasen (26-08-2002)
Kommentar
Fra : Jan Jonasen


Dato : 26-08-02 21:17

In article <3D6A78D6.D30F700D@yahoo.com>, Ulrik Magnusson
(ulrikm@yahoo.com) wrote:
> Jeg ved ikke rigtig om volatile er en god idé (først og fremmest
> er det lidt svært at gennemskue ):
>
Tjo, men det vel mest fordi det sjældent bliver brugt, også af
undertegnede, da jeg ikke så ofte står i en situation, som kræver en 100%
atomisk counter.

> volatile static int idCount = 0;
> int id = idCount++; // er hele denne atomisk pga volatile eller er det
> // udelukkende inkrementeringen af idCount?
>
> T1: inkrementer idCount
> T2: inkrementer idCount
> T2: skriv id // med hvilken værdi?
> T1: skriv id // med hvilken værdi?
>
Vha. volatile kan operationen betragtes som atomisk, JLS benævner ikke ++
operatoren som atomisk i sig selv, men pga. volatile's mening vil ++ altid
blive udført på seneste (her største) værdi. Dette medføre at idCount vil
være korrekt selvom andre tråde måtte modificere denne, så vil du altid få
den største værdi på lige netop det tidspunkt dit id bliver sat.

--
Mvh/re Jan Jonasen
jonasen (at) it (dot) dk

If I wanted culture, I'd eat yogurt.

Jan Jonasen (26-08-2002)
Kommentar
Fra : Jan Jonasen


Dato : 26-08-02 21:17

In article <3D6A78D6.D30F700D@yahoo.com>, Ulrik Magnusson
(ulrikm@yahoo.com) wrote:
> Jeg ved ikke rigtig om volatile er en god idé (først og fremmest
> er det lidt svært at gennemskue ):
>
Tjo, men det vel mest fordi det sjældent bliver brugt, også af
undertegnede, da jeg ikke så ofte står i en situation, som kræver en 100%
atomisk counter.

> volatile static int idCount = 0;
> int id = idCount++; // er hele denne atomisk pga volatile eller er det
> // udelukkende inkrementeringen af idCount?
>
> T1: inkrementer idCount
> T2: inkrementer idCount
> T2: skriv id // med hvilken værdi?
> T1: skriv id // med hvilken værdi?
>
Vha. volatile kan operationen betragtes som atomisk, JLS benævner ikke ++
operatoren som atomisk i sig selv, men pga. volatile's mening vil ++ altid
blive udført på seneste (her største) værdi. Dette medføre at idCount vil
være korrekt selvom andre tråde måtte modificere denne, så vil du altid få
den største værdi på lige netop det tidspunkt dit id bliver sat.

--
Mvh/re Jan Jonasen
jonasen (at) it (dot) dk

If I wanted culture, I'd eat yogurt.

Ulrik Magnusson (26-08-2002)
Kommentar
Fra : Ulrik Magnusson


Dato : 26-08-02 21:43



Jan Jonasen wrote:

> > volatile static int idCount = 0;
> > int id = idCount++; // er hele denne atomisk pga volatile eller er det
> > // udelukkende inkrementeringen af idCount?
> >
> > T1: inkrementer idCount
> > T2: inkrementer idCount
> > T2: skriv id // med hvilken værdi?
> > T1: skriv id // med hvilken værdi?
> >
> Vha. volatile kan operationen betragtes som atomisk, JLS benævner ikke ++
> operatoren som atomisk i sig selv, men pga. volatile's mening vil ++ altid
> blive udført på seneste (her største) værdi. Dette medføre at idCount vil
> være korrekt selvom andre tråde måtte modificere denne, så vil du altid få
> den største værdi på lige netop det tidspunkt dit id bliver sat.

og så er man vel alligevel nødt at synkronisere for ikke at få to biler
med samme id:

public class Bil
{
private static int idCount = 1;
private static Object classSync = new Object();

private int id;
private String name = "Bil nr. ";

public Bil()
{
synchronized( classSync )
{
id = idCount++;
}
name += id;
}
}

Ulrik Magnusson


Morten (27-08-2002)
Kommentar
Fra : Morten


Dato : 27-08-02 08:52

Ulrik Magnusson wrote:
>
> Jan Jonasen wrote:
>
>
>>>volatile static int idCount = 0;
>>>int id = idCount++; // er hele denne atomisk pga volatile eller er det
>>> // udelukkende inkrementeringen af idCount?
>>>
>>>T1: inkrementer idCount
>>>T2: inkrementer idCount
>>>T2: skriv id // med hvilken værdi?
>>>T1: skriv id // med hvilken værdi?
>>>
>>
>>Vha. volatile kan operationen betragtes som atomisk, JLS benævner ikke ++
>>operatoren som atomisk i sig selv, men pga. volatile's mening vil ++ altid
>>blive udført på seneste (her største) værdi. Dette medføre at idCount vil
>>være korrekt selvom andre tråde måtte modificere denne, så vil du altid få
>>den største værdi på lige netop det tidspunkt dit id bliver sat.
>
>
> og så er man vel alligevel nødt at synkronisere for ikke at få to biler
> med samme id:
>
> public class Bil
> {
> private static int idCount = 1;
> private static Object classSync = new Object();
>
> private int id;
> private String name = "Bil nr. ";
>
> public Bil()
> {
> synchronized( classSync )
> {
> id = idCount++;
> }
> name += id;
> }
> }

Du bør have din name += id inde i din synchronized block.

T1: id = X
T2: id = Y
T1: name += Y
T2: name += Y

Faren er ikke så meget om ++ på en integer er atomar (hvilken den er,
i modsætning til tilsvarende operation på en long), men at den
sammenhæng du bruger den i, er trådsikker.

Mvh Morten


Ulrik Magnusson (27-08-2002)
Kommentar
Fra : Ulrik Magnusson


Dato : 27-08-02 14:27

Morten wrote:

>> public class Bil
>> {
>> private static int idCount = 1;
>> private static Object classSync = new Object();
>>
>> private int id;
>> private String name = "Bil nr. ";
>>
>> public Bil()
>> {
>> synchronized( classSync )
>> {
>> id = idCount++;
>> }
>> name += id;
>> }
>> }
>
> Du bør have din name += id inde i din synchronized block.
>
> T1: id = X
> T2: id = Y
> T1: name += Y
> T2: name += Y


Nej. Synkroniseringen skal udelukkende sikre at inkrementeringen og
overførselen fra klasse til instans foregår uden afbrydelse (dvs uden
at andre piller ved idCount imens). Ovenstående kan ikke ske, da 2 tråde
ikke kan være i samme konstruktor på samme tid (mao. T1.name/T1.id og
T2.name/T2.id refererer til name og id i 2 forskellige objekter).

Ulrik Magnusson



Jan Jonasen (27-08-2002)
Kommentar
Fra : Jan Jonasen


Dato : 27-08-02 17:54

In article <3D6A92E8.E3A6B263@yahoo.com>, Ulrik Magnusson
(ulrikm@yahoo.com) wrote:
> og så er man vel alligevel nødt at synkronisere for ikke at få to biler
> med samme id:
>
> public class Bil
> {
> private static int idCount = 1;
> private static Object classSync = new Object();
>
> private int id;
> private String name = "Bil nr. ";
>
> public Bil()
> {
> synchronized( classSync )
> {
> id = idCount++;
> }
> name += id;
> }
> }
>
Ikke med mindre du også ønsker Bil'er konstrueret i rækkefølge. Volatile
(på idCount) ville sikre id altid bliver forskellig.

--
Mvh/re Jan Jonasen
jonasen (at) it (dot) dk

If I wanted culture, I'd eat yogurt.

Ulrik Magnusson (27-08-2002)
Kommentar
Fra : Ulrik Magnusson


Dato : 27-08-02 19:00

Jan Jonasen wrote:

> In article <3D6A92E8.E3A6B263@yahoo.com>, Ulrik Magnusson
> (ulrikm@yahoo.com) wrote:
> > og så er man vel alligevel nødt at synkronisere for ikke at få to biler
> > med samme id:
> >
> > public class Bil
> > {
> > private static int idCount = 1;
> > private static Object classSync = new Object();
> >
> > private int id;
> > private String name = "Bil nr. ";
> >
> > public Bil()
> > {
> > synchronized( classSync )
> > {
> > id = idCount++;
> > }
> > name += id;
> > }
> > }
> >
> Ikke med mindre du også ønsker Bil'er konstrueret i rækkefølge.

?? - hvordan skal "i rækkefølge" dog forstås?

> Volatile (på idCount) ville sikre id altid bliver forskellig.

Jeg mangler lidt argumentation - kan nedenstående ikke ske
og hvorfor ikke?

private static volatile int idCount = 0;
private int id = ++idCount;

T1: idCount = idCount + 1
T2: idCount = idCount + 1
T2: id = 2
T1: id = 2

Ulrik Magnusson


Jan Jonasen (27-08-2002)
Kommentar
Fra : Jan Jonasen


Dato : 27-08-02 21:05

In article <3D6BBE3D.CB655668@yahoo.com>, Ulrik Magnusson
(ulrikm@yahoo.com) wrote:
> ?? - hvordan skal "i rækkefølge" dog forstås?
>
På den måde at først til kommer først tilbage.

> Jeg mangler lidt argumentation - kan nedenstående ikke ske
> og hvorfor ikke?
>
> private static volatile int idCount = 0;
> private int id = ++idCount;
>
> T1: idCount = idCount + 1
> T2: idCount = idCount + 1
> T2: id = 2
> T1: id = 2
>
Af den simple grund at det netop er volatile's opgave at sørge for, at det
altid er seneste værdi der benyttes i en given variabel. (går ud fra
idCount skal erstattes med id) id vil med idCount i ovenstående tilfælde
altid blive unik, sådan er det bare Eksempel findes i JLS 8.3.1.4,
nemmere end min upædagogiske gengivelse.

--
Mvh/re Jan Jonasen
jonasen (at) it (dot) dk

If I wanted culture, I'd eat yogurt.

Ulrik Magnusson (27-08-2002)
Kommentar
Fra : Ulrik Magnusson


Dato : 27-08-02 21:34



Jan Jonasen wrote:

> In article <3D6BBE3D.CB655668@yahoo.com>, Ulrik Magnusson
> (ulrikm@yahoo.com) wrote:
> > ?? - hvordan skal "i rækkefølge" dog forstås?
> >
> På den måde at først til kommer først tilbage.

Men hvorfra og hvortil? Her et illustrerende forløb:

T1: kald super.konstruktor og find synkroniseringsobjekt
T2: kald super.konstruktor og find synkroniseringsobjekt
T2: sync blok: id = idCount++
T2: name += id
T2: konstruktion af bil færdig
T1: sync blok: id = idCount++
T1: name += id
T1: konstruktion af bil færdig

> > Jeg mangler lidt argumentation - kan nedenstående ikke ske
> > og hvorfor ikke?
> >
> > private static volatile int idCount = 0;
> > private int id = ++idCount;
> >
> > T1: idCount = idCount + 1
> > T2: idCount = idCount + 1
> > T2: id = 2
> > T1: id = 2
> >
> Af den simple grund at det netop er volatile's opgave at sørge for, at det
> altid er seneste værdi der benyttes i en given variabel. (går ud fra
> idCount skal erstattes med id) id vil med idCount i ovenstående tilfælde
> altid blive unik, sådan er det bare Eksempel findes i JLS 8.3.1.4,
> nemmere end min upædagogiske gengivelse.

JLS 8.3.1.4 snakker så vidt jeg kan se kun om opdatering af delte
variabler (idCount) - ikke om de udelte (id). Problemet er netop
opdateringen af id som ikke må ske med den samme værdi 2 gange.
(idCount skal _ikke_ erstattes af id - id tildeles den nyeste værdi af
idCount ved ovenstående forløb)

Ulrik Magnusson


Trygleren (30-08-2002)
Kommentar
Fra : Trygleren


Dato : 30-08-02 19:49

> så ville jeg have mine obj, kom til at hede noget henad: "BilNr1",
> "BilNr2"....
Så må du kalde dem det. Du kan ikke dynamisk navngive objekter ved
instansieringen. Sådan er det!

> jeg kan godt se problemet i at jeg returnerer en String, som skal være
> navnet, men kan det ikke afhjælpes ?
Nope. I hvert fald ikke sådan som jeg forstår dit problem.

> - hvis jeg ikke vil lægge mine objekter i et array... .?
Så må du have dem til at flyde rundt =)

> Nu har jeg prøvet at finde en løsning i nogle dage før jeg spurgte mine
> lærere, men nu synes jeg at være løbet ind i en mur.... en stor en.. kunne
> ikke engang finde noget på google :((
Det er fordi det ikke er muligt =)

> 1000 tak
>
> mvh.Simon
Sil'

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"Sic gorgiamus allos subjectatos nunc"
Lars Winther





Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408521
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste