Results 1 to 35 of 35

Thread: beispiel 1 task A

  1. #1
    Hero
    Join Date
    Oct 2009
    Posts
    197
    Thanks
    21
    Thanked 6 Times in 3 Posts

    beispiel 1 task A

    wenn ich einen klartext hab und rufe den argument -h,werden die einzelnenen buchstaben anhand meines definierten arrays(array der 28 wörter) in wörter je nach buchstabe in meinem klartext umgewandelt

    habe ich das richtig verstanden?

    danke

  2. #2
    Dipl.Ing Ravu al Hemio's Avatar
    Join Date
    Dec 2009
    Location
    einmal TU, immer TU
    Posts
    1,359
    Thanks
    77
    Thanked 605 Times in 433 Posts
    Solange die dir zugeteilte Aufgabe stegit ist: ja.
    ~~ Ondra „Ravu al Hemio“ Hošek
    not an architect

    Tutor außer Dienst · OOP · OS · PK · PP

  3. #3
    Hero
    Join Date
    Oct 2009
    Posts
    197
    Thanks
    21
    Thanked 6 Times in 3 Posts
    sorry hab vergessen es zu erwähnen

  4. #4
    Hero
    Join Date
    Oct 2009
    Posts
    197
    Thanks
    21
    Thanked 6 Times in 3 Posts
    Ich habe folgendes problem

    static const char *strings[]={"one","two","three"}
    static char *text[5];

    ich will einfach die strings elemente von strings[] in den array der pointer text[5] kopieren(pointer kopieren)
    ich hab text[0]=strings[0] probiert aber funktioniert nicht. ich bekomme warning: assignment makes pointer from integer without a cast vom compiler

    ich hab auch *text[0]=*strings[0] probiert dann aber ich bekomme segmetation fault

    wie kann ich das lösen
    danke
    Last edited by MSIO7; 01-04-2012 at 00:01.

  5. #5
    Baccalaureus luna09's Avatar
    Join Date
    May 2009
    Location
    vienna
    Posts
    649
    Thanks
    56
    Thanked 103 Times in 66 Posts
    static char *strings[]={"one","two","three"};
    static char *text[5];

    text[0] = strings[0];
    printf("%s --- \n", text[0]); ---> Ausgabe: one


    gibt es einen Grund warum du "strings" const gemacht hast??

  6. #6
    Dipl.Ing Ravu al Hemio's Avatar
    Join Date
    Dec 2009
    Location
    einmal TU, immer TU
    Posts
    1,359
    Thanks
    77
    Thanked 605 Times in 433 Posts
    Quote Originally Posted by luna09 View Post
    gibt es einen Grund warum du "strings" const gemacht hast??
    Er hat durchaus einen guten Grund: jedes String-Literal ("hallo, ich bin ein String-Literal") ist vom Typ const char * und es ist eine sehr gute Idee, das formell zu erwähnen, denn in dem Moment, wo du in eine String-Konstante hineinschreibst, ist ein Segfault mehr als wahrscheinlich (wie ich kürzlich in einer meiner Betreuungseinheiten feststellen musste).

    Quote Originally Posted by MSIO7 View Post
    ich will einfach die strings elemente von strings[] in den array der pointer text[5] kopieren(pointer kopieren)
    wie kann ich das lösen
    Rein prinzipiell indem du den String castest. Die Frage ist: warum? Du versuchst hier den Schutz des const-Schlüsselworts zu umgehen, und mir fällt keine Funktion ein, die du in stegit bräuchtest, die nicht mit einem const char * umgehen kann.

    Umgekehrt kannst du aber jederzeit einem const char * einen char * zuweisen.
    ~~ Ondra „Ravu al Hemio“ Hošek
    not an architect

    Tutor außer Dienst · OOP · OS · PK · PP

  7. #7
    Hero
    Join Date
    Oct 2009
    Posts
    197
    Thanks
    21
    Thanked 6 Times in 3 Posts
    Quote Originally Posted by Ravu al Hemio View Post
    Er hat durchaus einen guten Grund: jedes String-Literal ("hallo, ich bin ein String-Literal") ist vom Typ const char * und es ist eine sehr gute Idee, das formell zu erwähnen, denn in dem Moment, wo du in eine String-Konstante hineinschreibst, ist ein Segfault mehr als wahrscheinlich (wie ich kürzlich in einer meiner Betreuungseinheiten feststellen musste).


    Rein prinzipiell indem du den String castest. Die Frage ist: warum? Du versuchst hier den Schutz des const-Schlüsselworts zu umgehen, und mir fällt keine Funktion ein, die du in stegit bräuchtest, die nicht mit einem const char * umgehen kann.

    Umgekehrt kannst du aber jederzeit einem const char * einen char * zuweisen.
    ich brauche das deshalb weil ich mit static const *string[]={"one","two",...} 28 wörter(zeichenketten- array) initialisieren will.dann habe ich static char *cipher_text[300] definiert. jedes zeichen im eingelesenen text wird nach dem array index in das literal vom *string[] umgewandelt. string literale will ich in den cipher_text array speichern d.h im cipher_text wird die geheimbotschaft.. dann kann ich sie entweder in ein file abspeichern oder auf den bildschirm ausgeben .. ist das einen guten ansatz ?

  8. #8
    Dipl.Ing Ravu al Hemio's Avatar
    Join Date
    Dec 2009
    Location
    einmal TU, immer TU
    Posts
    1,359
    Thanks
    77
    Thanked 605 Times in 433 Posts
    Es ist sicher ein möglicher Ansatz. Hilft es, wenn du static char *cipher_text[300] in static const char *cipher_text[300] änderst?

    Du musst die Ergebnisse aber nicht unbedingt zwischenspeichern, sondern kannst die Wörter ja sofort ausgeben. fprintf kann helfen: wenn es auf dem Bildschirm landen soll, übergibst du als ersten Parameter stdout; wenn es in eine Datei geschrieben werden soll, dann übergibst du den entsprechenden FILE-Pointer als ersten Parameter.
    ~~ Ondra „Ravu al Hemio“ Hošek
    not an architect

    Tutor außer Dienst · OOP · OS · PK · PP

  9. #9
    Super Moderator Kampi's Avatar
    Join Date
    Feb 2002
    Location
    Elysium
    Posts
    2,161
    Thanks
    256
    Thanked 619 Times in 348 Posts
    Quote Originally Posted by Ravu al Hemio View Post
    Er hat durchaus einen guten Grund: jedes String-Literal ("hallo, ich bin ein String-Literal") ist vom Typ const char * und es ist eine sehr gute Idee, das formell zu erwähnen, denn in dem Moment, wo du in eine String-Konstante hineinschreibst, ist ein Segfault mehr als wahrscheinlich (wie ich kürzlich in einer meiner Betreuungseinheiten feststellen musste).
    jein. also segfaulten wird es weil er das literal in einen read-only bereich legt (so erzaehl ich das immer in der VO). aber was den typ angeht:
    Quote Originally Posted by C99-6.4.5.5
    ... The multibyte character sequence is then used to initialize an array of static storage duration and length just sufficient to contain the sequence. For character string literals, the array elements have type char...
    also formal ist der typ nicht "const char *", auch wenn das verhalten aehnlich wirkt. warum darf er is in einen read-only bereich legen und warum wird es deshalb segfaulten:
    Quote Originally Posted by C99-6.4.5.6
    ... If the program attempts to modify such an array, the behavior is undefined.
    wie immer, falls ich bei meiner interpretation falsch liege, bitte um aufklaerung.
    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  10. #10
    Dipl.Ing Ravu al Hemio's Avatar
    Join Date
    Dec 2009
    Location
    einmal TU, immer TU
    Posts
    1,359
    Thanks
    77
    Thanked 605 Times in 433 Posts
    Mea culpa, du hast Recht. Ich habe es mit C++ verwechselt, wo die Const-Correctness-Offensive dazu führte, dass auch String-Literale einem Array von const chars entsprechen:

    Quote Originally Posted by N3242-2.14.5 (8)
    Ordinary string literals and UTF-8 string literals are also referred to as narrow string literals. A narrow string literal has type "array of n const char", where n is the size of the string as defined below, and has static storage duration (3.7).
    Angeblich weigert sich das Standard-Komitee, String-Literale auch in C const zu machen, auch nur aus Gründen der "bugward compatibility".
    ~~ Ondra „Ravu al Hemio“ Hošek
    not an architect

    Tutor außer Dienst · OOP · OS · PK · PP

  11. The Following User Says Thank You to Ravu al Hemio For This Useful Post:


  12. #11
    Super Moderator Kampi's Avatar
    Join Date
    Feb 2002
    Location
    Elysium
    Posts
    2,161
    Thanks
    256
    Thanked 619 Times in 348 Posts
    Quote Originally Posted by Ravu al Hemio View Post
    Angeblich weigert sich das Standard-Komitee, String-Literale auch in C const zu machen, auch nur aus Gründen der "bugward compatibility".
    sonst mueszte man ja lauter "discards 'const' qualifier"-warnings bekommen. wer will denn sowas? ;-)
    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  13. #12
    Hero
    Join Date
    Apr 2007
    Posts
    214
    Thanks
    21
    Thanked 2 Times in 2 Posts
    habe eine Verständnisfrage zur Angabe Mycompress.
    Definieren Sie für die maximale Anzahl an Zeichen in einer Zeile eine Konstante, wobei Sie annehmen
    dürfen, dass keine Zeile mehr Zeichen enthält.
    ist das für eine stdin Eingabe gedacht oder auch wenn man aus einem File lesen soll?
    muss man das genau so machen?
    weil wenn man von einem File liest, ist doch egal wieviele Zeilen bzw. welche Zeilenanzahl man liest?!
    Last edited by Racket; 08-04-2012 at 19:42.

  14. #13
    Baccalaureus luna09's Avatar
    Join Date
    May 2009
    Location
    vienna
    Posts
    649
    Thanks
    56
    Thanked 103 Times in 66 Posts
    du kannst das bei mycompress natürlich mit fgetc machen, also pro character von file lesen.
    wenn du es aber anders machst und pro Zeile liest, dann brauchst du die Begrenzung schon.
    nämlich bei fgets(buffer, zeilenlaenge, filepointer)

    mit fgets liest du die definierte Anzahl an Zeichen pro Zeile --> zeilenlaenge in deinen Buffer.
    den deklarierst du vorher zB mit char buffer[zeilenlaenge];

    am besten definierst du zeilenlaenge via:
    #define zeilenlaenge (40)
    oder eben eine andere zahl - das ist dann dir überlassen

  15. #14
    Hero
    Join Date
    Apr 2007
    Posts
    214
    Thanks
    21
    Thanked 2 Times in 2 Posts
    kann ich auch direkt mit buffer[1][0], lesen die einzelnen char lesen?

  16. #15
    Dipl.Ing Ravu al Hemio's Avatar
    Join Date
    Dec 2009
    Location
    einmal TU, immer TU
    Posts
    1,359
    Thanks
    77
    Thanked 605 Times in 433 Posts
    Kannst du sicher, hast dann aber trotzdem nur maximal so viele Zeichen eingelesen, wie viel du an fgets übergeben hast (minus 1 für das NUL-Byte).
    ~~ Ondra „Ravu al Hemio“ Hošek
    not an architect

    Tutor außer Dienst · OOP · OS · PK · PP

  17. #16
    Hero
    Join Date
    Apr 2007
    Posts
    214
    Thanks
    21
    Thanked 2 Times in 2 Posts
    OK danke euch beiden!!
    Wie kann ich ein einzelnes char in den buffer speichern, mit fputc hab ich gerade meine probleme!
    char** fileBuffer;
    char* newfileBuffer;

    fputc( (int)zeichen, newfileBuffer );
    newfileBuffer[0] = fileBuffer[1][0]; geht auch nicht

  18. #17
    Super Moderator Kampi's Avatar
    Join Date
    Feb 2002
    Location
    Elysium
    Posts
    2,161
    Thanks
    256
    Thanked 619 Times in 348 Posts
    fuer ein zeichen reicht ein "char einzeichen". hast du pointer, brauchst du speicher. malloc ist dein freund. und mit fputc, wie aus der manpage ersichtlich, schreibt man in einen FILE stream.
    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  19. #18
    Elite
    Join Date
    Nov 2009
    Posts
    277
    Thanks
    47
    Thanked 18 Times in 16 Posts

    Post

    Hi, hab ein kleines problem.

    Also, ich lese mit fgets die eingabe in ein char array (jede zeile einzeln) und übergebe die Zeile dann in meine hide funktion. Funktioniert alles supi, solang die eingabe <= 12 zeichen hat. sobald ich mehr als 12 zeichen habe wird der rest einfach ignoriert, lasse mir mit printf zu testzwecken die eingabe nochmal ausgeben bevor ich sie übergebe und danach ebenfalls, vor dem übergeben in die neue funktion habe ich alle zeichen, danach nur noch 12... :/

    hier ein ausschnitt des codes
    Code:
    while(fgets(buffer,sizeof(buffer),stdin)!=NULL){
    ...
       strcpy(gesamt[i],buffer);
       if (hOptionCnt==1){    
            printf("%s \n",gesamt[i]); <----------HIER stimmt die Eingabe noch
            char **ergebnis=hOpt(gesamt[i]);
            k=0;
            while(ergebnis[k]!='\0'){
            printf("%s",ergebnis[k]);
            k++;
       }
       printf("\n");
                    
                }
       ...
    
    }
    
    char** hOpt(char *in)
    {
        int k=0;
        char **output;
        int count=0;
        int x=0;
        output = (char**)malloc(1*sizeof(char*));
        printf("%s\n",in); <-----HIER ist die Eingabe nur noch 12 Zeichen lang
        while(in[k]!='\0')
        {    
            x=0;
            while(x<28){
                ...
                }
                x++;
            }
            k++;
        }
        return output;
    }
    edit:
    achja und noch ein paar kleine sachen:
    kann man davon ausgehen, dass keine Großbuchstaben verwendet werden?
    ließt -f immer von einer file wie in der angabe?
    Last edited by Tyleet; 10-04-2012 at 19:04.

  20. #19
    Dipl.Ing Ravu al Hemio's Avatar
    Join Date
    Dec 2009
    Location
    einmal TU, immer TU
    Posts
    1,359
    Thanks
    77
    Thanked 605 Times in 433 Posts
    Wie sind deine Variablen buffer und gesamt definiert?
    ~~ Ondra „Ravu al Hemio“ Hošek
    not an architect

    Tutor außer Dienst · OOP · OS · PK · PP

  21. #20
    Elite
    Join Date
    Nov 2009
    Posts
    277
    Thanks
    47
    Thanked 18 Times in 16 Posts
    Quote Originally Posted by Ravu al Hemio View Post
    Wie sind deine Variablen buffer und gesamt definiert?
    char **gesamt;
    char buffer[300];

    und mache auch
    gesamt = realloc(gesamt,(i+1)*sizeof(char*));
    gesamt[i] = (char*) malloc(sizeof(char*));

    bevor strcpy gemacht wird.

  22. #21
    Dipl.Ing Ravu al Hemio's Avatar
    Join Date
    Dec 2009
    Location
    einmal TU, immer TU
    Posts
    1,359
    Thanks
    77
    Thanked 605 Times in 433 Posts
    Da ist es auch schon: die Größe eines Character-Pointers (char*) ist 8 Bytes (auf 64-Bit-Systemen); du allozierst also nur genug Platz für acht Zeichen. Du wirst dich entweder auf eine Maximalgröße beschränken müssen oder eine Anfangsgröße wählen und nach Bedarf expandieren.
    ~~ Ondra „Ravu al Hemio“ Hošek
    not an architect

    Tutor außer Dienst · OOP · OS · PK · PP

  23. The Following User Says Thank You to Ravu al Hemio For This Useful Post:


  24. #22
    Elite
    Join Date
    Nov 2009
    Posts
    277
    Thanks
    47
    Thanked 18 Times in 16 Posts
    Quote Originally Posted by Ravu al Hemio View Post
    Da ist es auch schon: die Größe eines Character-Pointers (char*) ist 8 Bytes (auf 64-Bit-Systemen); du allozierst also nur genug Platz für acht Zeichen. Du wirst dich entweder auf eine Maximalgröße beschränken müssen oder eine Anfangsgröße wählen und nach Bedarf expandieren.
    thx, that did the trick.

    wie siehts mit meinen anderen fragen aus, kannst du mir da vllt auch infos geben?


    kann man davon ausgehen, dass keine Großbuchstaben verwendet werden?
    ließt -f immer von einer file wie in der angabe?

  25. #23
    Dipl.Ing Ravu al Hemio's Avatar
    Join Date
    Dec 2009
    Location
    einmal TU, immer TU
    Posts
    1,359
    Thanks
    77
    Thanked 605 Times in 433 Posts
    Quote Originally Posted by Tyleet View Post
    kann man davon ausgehen, dass keine Großbuchstaben verwendet werden?
    Nein. Du kannst dir mit toupper() oder tolower() helfen -- Groß- und Kleinschreibung werden vom Versteckalgorithmus nicht unterschieden.

    Quote Originally Posted by Tyleet View Post
    ließt -f immer von einer file wie in der angabe?
    stegit liest gar nicht explizit von einer Datei -- dafür musst du stdin in der Shell umbiegen. Du solltest auf jeden Fall dein Programm so schreiben, dass Eingaben sowohl über das Terminal direkt als auch von einer Shell-verbogenen Datei akzeptiert werden.
    ~~ Ondra „Ravu al Hemio“ Hošek
    not an architect

    Tutor außer Dienst · OOP · OS · PK · PP

  26. The Following User Says Thank You to Ravu al Hemio For This Useful Post:


  27. #24
    Elite
    Join Date
    Nov 2009
    Posts
    277
    Thanks
    47
    Thanked 18 Times in 16 Posts
    thx für die antworten, nur noch eine letzte frage zu dem bsp:

    muss das programm von der console mit dem befehl "stegit ..." gestartet werden oder mit "./stegit..." ?

  28. #25
    Dipl.Ing Ravu al Hemio's Avatar
    Join Date
    Dec 2009
    Location
    einmal TU, immer TU
    Posts
    1,359
    Thanks
    77
    Thanked 605 Times in 433 Posts
    Unter Unix lässt sich ein Programm nur mit seinem Namen genau dann starten, wenn es in einem der Verzeichnisse innerhalb der Umgebungsvariable PATH enthalten ist. Dein Programm soll also mit dem relativen Pfad ./stegit gestartet werden.
    ~~ Ondra „Ravu al Hemio“ Hošek
    not an architect

    Tutor außer Dienst · OOP · OS · PK · PP

  29. #26
    Hero
    Join Date
    Oct 2009
    Posts
    197
    Thanks
    21
    Thanked 6 Times in 3 Posts
    ich hab schon das programm gemacht aber wenn ich jetzt auf das Beispiel in der angabe (Geheimbotschaft pscht..) anschaue,verstehe ich nicht,warum die leerzeichen zwischen die wörter sind.woher sind sie gekommen?

  30. #27
    Dipl.Ing Ravu al Hemio's Avatar
    Join Date
    Dec 2009
    Location
    einmal TU, immer TU
    Posts
    1,359
    Thanks
    77
    Thanked 605 Times in 433 Posts
    Sie werden bei der Ausgabe einfach nach jedem Wort hinzugefügt. Sonst kann man nicht wirklich die Grenzen zwischen den Wörtern erkennen.
    ~~ Ondra „Ravu al Hemio“ Hošek
    not an architect

    Tutor außer Dienst · OOP · OS · PK · PP

  31. #28
    Hero
    Join Date
    Oct 2009
    Posts
    197
    Thanks
    21
    Thanked 6 Times in 3 Posts
    Quote Originally Posted by Ravu al Hemio View Post
    Sie werden bei der Ausgabe einfach nach jedem Wort hinzugefügt. Sonst kann man nicht wirklich die Grenzen zwischen den Wörtern erkennen.
    aber wir wollen aber den text pscht... chiffrieren und jede Buchstabe durch ein Wort aus dem 28 strings array ersetzen. aber wenn einen zufälligen punkt kommt,soll einen puknt statt des Lernzeichen ersetzt werden. stimmt?

  32. #29
    Dipl.Ing Ravu al Hemio's Avatar
    Join Date
    Dec 2009
    Location
    einmal TU, immer TU
    Posts
    1,359
    Thanks
    77
    Thanked 605 Times in 433 Posts
    Nein. Für jeden Buchstaben, sowie für jedes Leerzeichen und jeden Punkt soll ein entsprechendes Wort aus der Liste ausgewählt und mit einem Leerzeichen danach ausgegeben werden. Außerdem werden des Öfteren zufällig Punkte ausgegeben (bestenfalls zwischen einem Wort und einem Leerzeichen).
    ~~ Ondra „Ravu al Hemio“ Hošek
    not an architect

    Tutor außer Dienst · OOP · OS · PK · PP

  33. #30
    Hero
    Join Date
    Oct 2009
    Posts
    197
    Thanks
    21
    Thanked 6 Times in 3 Posts
    Quote Originally Posted by Ravu al Hemio View Post
    Nein. Für jeden Buchstaben, sowie für jedes Leerzeichen und jeden Punkt soll ein entsprechendes Wort aus der Liste ausgewählt und mit einem Leerzeichen danach ausgegeben werden. Außerdem werden des Öfteren zufällig Punkte ausgegeben (bestenfalls zwischen einem Wort und einem Leerzeichen).
    ich hab das so gemeint ... wenn ich einen text hab z.b "ich bin informatiker" und meine array mit 28 elements *strings[]={"car","boat","cat","dog",...}. ich ersetze in mienem text jede buchstabe nach dem alphabet durch das wort im string array. z.b. das buchstabe 'a' im wort "informatik" bekommt "car" ... usw. und nach dem wort "cat" schon in meinem ersetzen text füge ich noch ein lernzeichen und zufällig punkte hinzu.

  34. #31
    Elite
    Join Date
    Nov 2009
    Posts
    277
    Thanks
    47
    Thanked 18 Times in 16 Posts
    ich hab das ganz trivial gemacht indem ich einfach direkt ein leerzeichen ans wort schon bei der initialisierung gemacht habe als
    words={"bla ", "blubb " ...};

    und dann hab ich ein 2. array, aus dem wörter alle 5-15 zeichen randommäßig eingefügt werden:
    wordsdot={"bla. ","blubb. " ...}

    beim wieder ins plaintextübersetzten muss man dann halt beide arrays überprüfen.

  35. #32
    Dipl.Ing Ravu al Hemio's Avatar
    Join Date
    Dec 2009
    Location
    einmal TU, immer TU
    Posts
    1,359
    Thanks
    77
    Thanked 605 Times in 433 Posts
    Ansonsten kann man nach der Ausgabe jedes Worts randommäßig schauen, ob es an der Zeit ist, einen Punkt hinzuzufügen, diesen dann bei Bedarf ebenfalls ausgeben, und zu guter Letzt das Leerzeichen dranhängen. Beim Einlesen kann man dann an den Leerzeichen trennen und, falls das Wort mit einem Punkt endet, diesen herauslöschen (= mit einem NUL-Character überschreiben), bevor man im Array sucht.
    ~~ Ondra „Ravu al Hemio“ Hošek
    not an architect

    Tutor außer Dienst · OOP · OS · PK · PP

  36. #33
    Master
    Join Date
    Oct 2010
    Location
    Mödling
    Posts
    159
    Thanks
    32
    Thanked 16 Times in 15 Posts
    ich hätte eine allgemeine Frage, wollte jetzt nicht unbedingt einen neuen Thread eröffnen. Undzwar heißt es bei der Abgabe im myTi dass wir alle verwendeten header-files in das Archiv kopieren sollen. Da wäre meine Frage wo ich jene finde, weil eine standard Suche spuckt mir teilweise 20 gleichnamige Dateien aus. Ich verwende Ubuntu und Netbeans

  37. #34
    Dipl.Ing Ravu al Hemio's Avatar
    Join Date
    Dec 2009
    Location
    einmal TU, immer TU
    Posts
    1,359
    Thanks
    77
    Thanked 605 Times in 433 Posts
    Die System-Header müssen nicht mitgepackt werden, nur die Header, die das Programm zusätzlich braucht. (Solche Zusatzheader hat man dann höchstwahrscheinlich selber geschrieben.)
    ~~ Ondra „Ravu al Hemio“ Hošek
    not an architect

    Tutor außer Dienst · OOP · OS · PK · PP

  38. The Following User Says Thank You to Ravu al Hemio For This Useful Post:


  39. #35
    Master
    Join Date
    Oct 2010
    Location
    Mödling
    Posts
    159
    Thanks
    32
    Thanked 16 Times in 15 Posts
    Alles klar danke hab ich mir eigentlich eh schon gedacht

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •