Problem mit Indy oder Struktur?
-
Hallo miteinander
Ich habe eine eigene Klasse Namens(CFtp) eingebaut, die sowohl FTP-Sachen mit Indy macht, als auch Strings von remote-files verarbeiten soll.
Der Konstruktor dafür ind der Datei CFtp.h
CFtp(TForm* Owner);und in der CFtp.cpp
CFtp::CFtp(TForm* Owner) { TIdFTP *Mftp = new TIdFTP(0); formular = Owner; }In der CFtp liegt eine Struktur
struct tagVerbindung { int Port; AnsiString User; AnsiString Password; AnsiString Host; AnsiString Path; AnsiString ReceiveDir; }; tagVerbindung *Verbindung;Über mein Hauptformular "Form1" in der Datei Unit1.h
deklariere ich ein Objekt auf diese KlasseCFtp *ftp;und in der Unit1.cpp
ftp = new CFtp(this); //ftp->Verbindung->Port = 11; ftp->Verbindung->User = "username"; ftp->Verbindung->Password = "passwort"; //ftp->Verbindung->Host = "111.111.111.111"; //ftp->Verbindung->Path = "html/irgendeinpfad"; /*Ordner zum download auf meinem Rechner*/ //ftp->Verbindung->ReceiveDir = "receive";Soweit funktioniert das auch.
Komisch wird es wenn ich im letzten Code die Zeile den Kommenter entkommentiereftp->Verbindung->Port = 11;Fehlermeldung:(als Message)
Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 00000000. Lesen von Adresse 00000000'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.Noch komischer, wenn ich das sein lasse und die andere Zeile entkommentiere
/*Ordner zum download auf meinem Rechner*/ ftp->Verbindung->ReceiveDir = "receive";Da passiert zunächst nichts, aber beim Schließen des Formulars
Fehlermeldung:(als Message)
Zugriffsverletzung bei Adresse 0042009E in Modul 'Project1.exe'. Lesen von Adresse 00657669.Ich muss noch dazu sagen, das zunächst keine Verbindungen und so weiter stattfinden.
Der Fehler muss also an der Struktur an sich liegen. Finde ich aber nicht.Hilfe
-
tagVerbindung *Verbindung;
ist ein Zeiger -> hat der auch irgendwo Speicherplatz bekommen?Wozu hat die Klasse überhaupt TForm* Owner ?
Wozu innerhalb dieser "einfachen" Klasse noch eine Struktur? Warum sind die Variablen nicht einfach Member der Klasse?
//ftp->Verbindung->Port = 11;
Sofern du mit anderen FTP-Servern arbeiten willst = 21 (20)
-
Jetzt klappts
statt tagVerbindung *Verbindung;
tagVerbindung Verbindung;Danke
-
Für dich und deine Klasse vielleicht noch ein interessanter Artikel aus der FAQ:
http://www.c-plusplus.net/forum/viewtopic.php?t=39302