Übergabe von Daten in eine TStringListe



  • Hallo

    Ich habe ein problem mit meiner Stringliste .
    Erklärung Code 1:

    TStringList *str = new TStringList();
    

    Form 1 lege ich eine Stringliste an

    Code 2:

    class TForm2 : public TForm
    {
    __published:	// IDE-verwaltete Komponenten
    	TGroupBox *GroupBox1;
    	TEdit *Edit1;
    	TButton *Button1;
    	TMemo *Memo1;
    	TOpenDialog *OpenDialog1;
    	TButton *Button2;
    	void __fastcall Button1Click(TObject *Sender);
    	void __fastcall Button2Click(TObject *Sender);
    private:	// Benutzer-Deklarationen
    public:		// Benutzer-Deklarationen
    	__fastcall TForm2(TComponent* Owner);
    	TStringList *str; // Variable von Form 1 TStringliste
    };
    

    Form 2 benutze ich die Variable str von der TStringListe Form 1

    ode 3:

    if(sr.Name != "." && sr.Name != ".." && sr.Name != "Thumbs.db" && sr.Name != " ")
    		{
    			Memo1->Lines->Add(sr.Name);
    			i++;
    			str->Add(sr.Name); // Füllen der Stringliste auf Form 1
    
    		}
    

    Form 2 rufe ich die Variable auf aber ich bekomme beim einlesen immer eine Fehlermeldung

    Die Form sind auch includiert Form1 <-> Form2 .

    Warum kann ich die DAten nicht in der StringListe auf Form 1 eintragen.

    MFG



  • Hallo,

    weil dort die Zuweisung auf Form1 fehlt. Zudem musst du die StringList nicht erneut in Form2 deklarieren / erstellen wenn sie ihn Form1 bereits existiert.

    Form1->str->blabla(); // reicht aus wenn die Unit zu Form1 eingebunden und die Stringlist public ist
    

    LG, Micha



  • DAnke das hatte geklappt aber bekomme hier einen Exception.

    [cpp]

    if(sr.Name != "." && sr.Name != ".." && sr.Name != "Thumbs.db" && sr.Name != " ")
    {
    Memo1->Lines->Add(sr.Name);
    i++;
    //Exception -> beim füllen str->Add(sr.Name); // Füllen der Stringliste auf Form 1

    }



  • Hallo,

    versteh ich nicht, hat es nun geklappt oder nicht?
    Die Zeile str->Add() ist natürlich diejenige welche geändert werden muss.

    LG, Micha



  • Ja mit dem

    Form1->str->Add(sr.Name);
    

    das hat geklappt so aber wenn ich das Programm ausführe den Ordner einlese füllt er mir nur das erste Kontrollmemeofeld mit demn ersten wert aus dem Ordner und dann bekomme ich eine Exception.
    Meldung :

    Zugriffsverletzung bei der Adress 00403B98 im Modul 'SlideShow.exe'
    Lesen von Adresse 00000000.

    wenn ich

    Form1->str->Add(sr.Name);
    

    rauslasse geht es wie zuvor und das Memofeld wird zur Kontrolle gefüllt mit allen Daten .

    Hmmmmmm 😕 😕 😕


  • Mod

    Hallo

    hast du im Debugger schon mal geschaut ob du
    auf die Zeile

    TStringList *str = new TStringList();
    

    ueberhaupt kommst

    Mfg
    Klaus


Anmelden zum Antworten