tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
336
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Apr 2004
    Beiträge
    189
    Hallo,

    ich stehe gerade etwas auf dem Schlauch, warum kann ich z. B. einen Pen wie folgt benutzen
    Code :
    1
    2
    3
    4
    5
    6
    
    void Function ()
    { ...
      Pen p (Color (255, 255, 255), 1.0f);
      g.DrawLine (&p, ...);
      ...
    }
    aber nicht wenn er außerhalb der Funktion deklariert wird, a la
    Code :
    1
    2
    3
    4
    5
    6
    
    Pen p (Color (255, 255, 255), 1.0f);
    void Function ()
    { ...
      g.DrawLine (&p, ...);
      ...
    }
    Im zweiten Fall wird einfach garnichts gezeichnet. => ?

    Einen int kann ich doch auch außerhalb einer Funktion deklarieren und es funktioniert, warum funktioniert das hier jedoch nicht? Vielleicht missachte ich ja was grundsätzliches.

    Danke schon mal...

    EDIT
    Die Frage geht offenbar doch noch weiter, ich bin grad vollends verwirrt.
    Ich hab es gerade mal mit einem int ausprobiert, offenbar ist es möglich zwei ints mit gleichem Namen einmal vor und einmal innerhalb der Funktion zu deklarieren. Ich hätte irgendwie einen Fehler a la multiple declaration etc erwartet. Für die Funktion scheint auch nur der int innerhalb der Funktion zu gelten.
    Also:
    Code :
    1
    2
    3
    4
    5
    
    int i = 5;
    ButtonClick ()
    {
      gebe_i_aus => wird als 5 ausgegeben
    }
    aber
    Code :
    1
    2
    3
    4
    5
    6
    
    int i = 5;
    ButtonClick ()
    {
      int i = 11;
      gebe_i_aus => wird als 11 ausgegeben
    }
    Für jede Hilfe bin ich dankbar...
    Geändert von randomize (10.05.07 um 19:55 Uhr)
     

  2. #2
    Avatar von Turri
    Turri Turri ist offline Mitglied Brokat
    Registriert seit
    Jun 2005
    Beiträge
    354
    Hallo,

    was ist Pen denn für ein Datentyp?

    In der VCL gibt es einen TPen, und der sollte wie alle Objekte, dynamisch angelegt werden.
    Code cpp:
    1
    2
    3
    
    TPen* p = new TPen();
    p->...
    ...
    Dann sollte es auch egal sein, wo der Pen definiert wird. Um auf den grundsätzlichen Fehler hinzuweisen

    wegen dem int:
    Der globale int Wert wird "verdeckt" durch den lokalen...
    "Verdeckung" oder "Überdeckung" sollten hierfür Schlagworte sein.

    MfG Turri
     

  3. #3
    Registriert seit
    Apr 2004
    Beiträge
    189
    Hi,
    das mit dem int habe ich auch gerade herausgefunden... War mir aber neu, dass das so geht.

    Ich meinte den Pen von GDI+, nicht den von Canvas. Ok, also der grundsätzliche Fehler ist also, dass ich ein Objekt wollte und es nicht als Zeiger definiert habe, es geht also nicht anders? Übrigens mach ich wohl jetzt schon wieder was falsch, denn direkt mit new initialisieren gibt mir eine Zugriffsverletzung. Den Zeiger kann ich zwar global deklarieren, aber p = new Pen (Color (255, 255, 255), 1.0f); habe ich nun in einer Init-Funktion stehen. Das müsste doch auch ohne extra Funktion funktionieren... Wie, ist ein bisschen over my head, glaube ich im Moment.

    Vielen dank aber, immerhin ist meine ursprüngliche Frage schon mal geklärt!
     

  4. #4
    Avatar von Turri
    Turri Turri ist offline Mitglied Brokat
    Registriert seit
    Jun 2005
    Beiträge
    354
    Oki,

    sorry das mit GDI+ hab ich wohl irgendwie verdrängt
     

Ähnliche Themen

  1. Fehler bei mysql_select_db() innerhalb einer Funktion
    Von sheeba1507 im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 05.10.10, 03:03
  2. Funktion innerhalb einer Funktion aufrufen
    Von Atalión im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 31.01.10, 17:32
  3. Antworten: 3
    Letzter Beitrag: 03.06.07, 12:07
  4. Antworten: 4
    Letzter Beitrag: 09.07.05, 00:19
  5. Antworten: 2
    Letzter Beitrag: 02.12.02, 16:59