Ü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
-
Hallo
hast du im Debugger schon mal geschaut ob du
auf die ZeileTStringList *str = new TStringList();
ueberhaupt kommst
Mfg
Klaus