Announcement

Collapse
No announcement yet.

Compilerproblem mit Builder 4.0

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Compilerproblem mit Builder 4.0

    <html>

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
    <meta name="ProgId" content="FrontPage.Editor.Document">
    <title>Neue Seite 1</title>
    </head>

    <body>

    <p>Beim Versuch, ein funktionierendes WIN32-Projekt (ohne VCL, ohne OWL) von Borland C++5.02 in
    den Borland C++Builder 4.0 zu übertragen, erhalte ich einen C++Fehler
    &quot;E2451 - Undefiniertes Symbol 'item' &quot;. Hier mein Quelltextausschnitt:</p>
    <pre>TV_INSERTSTRUCT tvis;
    tvis.hParent = hParent; // Übergeordneten-Eintrag setzen
    tvis.hInsertAfter = TVI_LAST; // neuen Eintrag am Ende einfügen
    tvis.item.mask = TVIF_TEXT | // Flags für neuen Eintrag setzen
    TVIF_PARAM |
    TVIF_IMAGE |
    TVIF_STATE |
    TVIF_SELECTEDIMAGE;</pre>
    <p>Der Fehler wird in der vierten Zeile gefunden. Hier jetzt die Definition aus
    der commctrl.h vom C++Builder:</p>
    <pre>typedef struct tagTVINSERTSTRUCTW {
    HTREEITEM hParent;
    HTREEITEM hInsertAfter;
    #if (_WIN32_IE >= 0x0400)
    union
    {
    TVITEMEXW itemex;
    TV_ITEMW item;
    } DUMMYUNIONNAME;
    #else
    TV_ITEMW item;
    #endif
    } TVINSERTSTRUCTW, FAR *LPTVINSERTSTRUCTW; </pre>
    <p>Mit 'itemex' funzt es auch nicht. Was muß ich tun ? Oder ist da ein Bug drin
    ?</p>
    <p>Die commctrl vom Borland 5.02 sieht etwas einfacher aus:</p>
    <pre>typedef struct _TV_INSERTSTRUCTW {
    HTREEITEM hParent;
    HTREEITEM hInsertAfter;
    TV_ITEMW item;
    } TV_INSERTSTRUCTW, FAR *LPTV_INSERTSTRUCTW;

    </pre>
    <p>Hintergrundinfo: Der Debugger vom BC5.02 zeigt mir nicht alle Variablen an,
    deshalb wollte ich es mal mit dem etwas moderneren Teil versuchen.</p>
    <p>Danke - Günther</p>

    </body>

    </html>
    Günther

  • #2
    Ich habe mal bei mir in der Hilfe nachgeschaut.
    Da steht das du bei dem Schlüsselwort union auf die enthaltenden Variablen mit dem . zugreifen kannst das würde bei dir folgendermaßen aussehen:

    <PRE>
    TV_INSERTSTRUCT tvis;
    tvis.hParent = hParent; // Übergeordneten-Eintrag setzen
    tvis.hInsertAfter = TVI_LAST; // neuen Eintrag am Ende einfügen
    tvis.DUMMYUNIONNAME.item.mask = TVIF_TEXT | // Flags für neuen Eintrag setzen
    TVIF_PARAM |
    TVIF_IMAGE |
    TVIF_STATE |
    TVIF_SELECTEDIMAGE;
    </PRE&gt

    Comment


    • #3
      Dann sagt er: undefiniertes Symbol 'u'.

      Ich hatte seinerzeit auch in de.comp.os.ms-windows.programmer gepostet, und dort waren wir übereingekommen, daß es ein Fehler im Builder sein muß.

      Hab es aber durch eine mutige Manipulation der commctrl.h hinbekommen: Die Compiler-Abfrage #if... rausgenommen und nur den Code des #else-Blocks stehengelassen.

      Gruß
      Günthe
      Günther

      Comment

      Working...
      X