Unterschied TStringlist vs Memo->Lines



  • Hi,
    warum funktioniert im folgenden Codeabschnitt die Funktion 'IndexOfName()' (wahlweise auch Values[]) nur in Verbindung mit z.B.einem MemoControl, obwohl sie doch auch in einer TStringList vom gleichen TStrings-Objekt abgeleitet wurde?

    TStringList* myList = new TStringList();
    
        //eine *.ini Datei Sektion in die TStrinliste einlesen
        myIniIn->ReadSectionValues("IrgendeineSektion", myList);
    
        //den Inhalt der TStringliste in eine Memo Kompo kopieren
        for (int i = 0; i < myList->Count; i++)
            myList->Strings[i] = Memo1->Lines->Add(myList->Strings[i]);
    
        //irgendwo steht jetzt: Name=Wert;            
        //nach "Name" suchen wir
        AnsiString asTmp = "Name";
    
        int iRet1 = Memo1->Lines->IndexOfName(asTmp);   //ergibt die Position von "Name"
        int iRet2 = myList->IndexOfName(asTmp);   //ergibt -1
    

    Ich würde gern den Inhalt einer *.ini Datei direkt in einer TStringListe bearbeiten, bei diese speziell dafür vorgesehene Funktion scheine ich aber irgendetwas zu übersehen.



  • Hallo,

    du bist dir schon im klaren das du mit

    myList->Strings[i] = Memo1->Lines->Add(myList->Strings[i]);
    

    den Inhalt deines myList->Strings[i] überschreibst!



  • SilentSurfer schrieb:

    //den Inhalt der TStringliste in eine Memo Kompo kopieren
        for (int i = 0; i < myList->Count; i++)
            myList->Strings[i] = Memo1->Lines->Add(myList->Strings[i]);
    

    Vermutlich liegt es am "Kopier-Code". Was weist Du denn myList->Strings[i] zu (und warum)?
    Schau Dir mal an, was TStringList::Add() zurückgibt - oder schmeiß mal den Debugger an.

    Gruß,

    Alexander



  • sch...
    danke, ihr habt recht,
    das Add gibt natürlich keine Stringreferenz sondern nur einen int zurück,
    das wars dann natürlich mit der Stringliste.

    Wer in der Methodenreferenz lesen kann, ist klar im Vorteil.


Anmelden zum Antworten