Funktionen, Pointer, Parameterübergabe



  • Halli-Hallo!
    Ich wollt mal fragen, ob ihr mir dabei helfen könnt. Es gibt eine ziemlich lange Funktion, die ich ein bisschen gliedern will, mit Unterfunktionen. Allerdings bin ich mir bei manchen Sachen unsicher, daher frag ich mal, ob das so klappen könnte...
    Alter Code:

    /* Deklarationen */
        TCHAR *pszMeta[MAX_META+1];             // pointer to meta names
        int16  nMetaIndex[MAX_META+1];          // index of meta names in original list    
        int16  nDelChar[MAX_META+1];            // number of deleted special chars
        int16  i,j,k,n,t;
    
        pszCopy = pszMeta[i];
        n = nMetaIndex[i];
        t = nDelChar[i];
        for ( k=i; k<j ; k++)
            {
            pszMeta[k] = pszMeta[k+1];
            nMetaIndex[k] = nMetaIndex[k+1];
            nDelChar[k] = nDelChar[k+1];
            }
        pszMeta[j] = pszCopy;
        nMetaIndex[j] = n;
        nDelChar[j] = t;
    

    Will ich ersetzen durch:

    ADDlg_SortMeta (&pszMeta[i], *nMetaIndex, *nDelChar, i, j);
    

    Funktion dazu lautet:

    VOID ADDlg_SortMeta(TCHAR** ppszString, int16* nInt1, int16* nInt2, int16 i, int16 j)
    {
        TCHAR   *pszHelp;
        int16   nHelp, nHelp2;
        int16   x,y,z;
    
        pszHelp = (*ppszString)[i];
        x = nInt1[i];
        y = nInt2[i];
    
        for( z = i; z < j; z++)
            {
            (*ppszString)[z] = (*ppszString)[z+1];
            nInt1[z] = nInt1[z+1];
            nInt2[z] = nInt2[z+1];
            }
        (*ppszString)[j] = pszHelp;
        nInt1[j] = x;
        nInt2[j] = y;
    }
    

    Klappt das so? Muss ich irgendwas beachten?
    Bin derzeit bei den theorethischen Überlegungen, da ich kein "Handwerkszeug" hier habe 😉
    Lieben Gruss
    Miriam



  • ADDlg_SortMeta (&pszMeta[i], *nMetaIndex, *nDelChar, i, j);

    das geht nicht, musst

    ADDlg_SortMeta (&pszMeta, *nMetaIndex, *nDelChar, i, j);

    verwenden. ansonsten kann ich auf die schnelle keinen fehler entdecken.



  • Was ist TCHAR??



  • Hallo,

    TCHAR ist ein generischer Windows-Datentyp, der je nach Projekt-Einstellungen in einen CHAR (das wiederum ein char ist) oder einen WCHAR (welcher ein UNICODE-Zeichen repräsentiert, ein wchar_t) aufgelöst wird.

    MfG



  • Vielen Dank schonmal für die Hilfe, für weitere Hinweise bin ich dankbar... Gerade im Bezug auf Pointer, die ich zwar als genial empfinde, aber nicht immer verstehe 🙂 Gibt es da irgendwelche "Eselsbrücken"?
    Gruss
    Miriam



  • Amila schrieb:

    Vielen Dank schonmal für die Hilfe, für weitere Hinweise bin ich dankbar... Gerade im Bezug auf Pointer, die ich zwar als genial empfinde, aber nicht immer verstehe 🙂 Gibt es da irgendwelche "Eselsbrücken"?
    Gruss
    Miriam

    Das ist am Anfang ganz normal, dass man mit Pointern Probleme hat. Dagegen hilft nur: Lesen & üben, üben, üben.
    Vielleicht kann dieser Link deinen Umgang mit Zeigern nochmals festigen:
    http://www.exonet.de/exonet.php3?doc=ctutorial/pointers.html

    Ansonsten: Hier fragen 🙂


Anmelden zum Antworten