![]() |
seltsames Problem mit 2 Formularen
Hallo,
ich weiß einfach nicht, was das Problem bei meinem Programm ist. Ich versuch einfach mal die Situation zu beschreiben Ich habe ein kleines Programm was mit einer Liste als Datenstruktur arbeitet. Die einzelnen Elemente der Liste werden in einer Textdatei gespeichert. Wenn das Programm neugestartet wird, wird diese Datei automatisch geladen und es wird eine Liste mit den Daten erstellt. Zum Bearbeiten wird einem zusätzlichen Formular der Zeiger des zu bearbeitenden Elements übergeben. Alles funktioniert an sich, das Problem ist follgendes: Sobald ich einmal in dem Programm das 2. Formular zum Bearbeiten eines Elementes öffne, scheint das Programm nur die Version der Liste zu speichern, die es zu Beginn geladen hat. Allerdings kann ich nach dem Aufruf des 2.Formulars ohne Probleme mit der Liste in dem Hauptprogramm weiterarbeiten, es treten keine Fehler auf und ich kann ohne Probleme alle Operationen durchführen und alle Änderungen werden auch noch angezeigt. Ich hab überhaupt keine Ahnung woran das liegen kann, alle Funktionen funktionieren an sich. Wenn ich beispielsweise die Liste sortiere und dann speichere oder eizelne Elemente lösche wird alles richtig abgespeichert, öffne ich allerdings irgendwann in dem Programm das 2.Formular, so wird wie oben gesagt keine einzige Änderung später gespeichert(Die Prozedur zum speichern der Liste wird allerdings korrekt aufgerufen). Da ich nicht weiß woran das Problem genau liegt und ich euch nicht mein ganzes Programm um die Ohren hauen will, poste ich hier einmal nur den Aufruf des 2.Formulars und dessen Destroy Methode, da ich denke, dass dort das Problem liegen muss, oder eben generell in der Übergabe des Zeigers.
Delphi-Quellcode:
Danke schonmal für eure Hilfe, weiß echt einfach nicht woran es liegen kann
{*
Prozedur in der die 2.Form aufgerufen wird actElement ist der Zeiger auf das aktuell markierte Element in der Liste *} procedure TfrmSampleOrganizer.MenuProgrammlistestarten1Click(Sender: TObject); begin FrmExternProg.actSample := actElement; //"Übergeben" des aktuellen Zeigers FrmExternProg.MyOpt := MyOptions; //"Übergeben" der Optionen FrmExternProg.ShowModal; //2. Formular wird aufgerufen SamplesToGrid(); //Zeichnet die Liste in das StringGrid end; procedure TfrmExternProg.FormDestroy(Sender: TObject); begin MyExOpt.Free; actSample := NIL; end; |
Re: seltsames Problem mit 2 Formularen
Liegt es möglicherweise daran, dass du die Datei in Form1 lädst, in Form2 änderst aber dann das, was auf Form1 ist, speicherst?
Mfg |
Re: seltsames Problem mit 2 Formularen
Hallo,
du übergibst per actSample einen Originalzeiger, löscht den denn per actSample:= NIL beim Beenden des 2. Forms und wunderst dich ? *wunder* kommentier das actSample:= NIL einfach mal aus. Und falls das nicht klappt, Bsp als Zip incl. der Textdatei, die viell. in c:\temp erwartet wird (für unsere Vista-Nutzer) Heiko |
Re: seltsames Problem mit 2 Formularen
Liste der Anhänge anzeigen (Anzahl: 2)
Hatte das erst nich mit dem NIL, dachte nur hinterher würde der irgendwie beim zerstören der 2.Form irgendwie auch den Inhalt des Zeigers oder so mitlöschen hatte halt echt kein Plan woran es liegt und ma probier. Aber wie gesagt vorher war das nich da und gleiches Problem
Pack die Sachen grad und upp die. Da ich aber bis grad dran gearbeitet hab muss ich die ma noch en bischen kommentieren, sonst bringt das glaub nich viel :/ Hab jetzt ma schnell das Projekt so angehängt wie es ist Wenn man die 2. Form aufrufen will, geht man im Menü auf "Bearbeiten"->"Programmliste starten" Unter Optionen steht irgendwo "Pfad der Sampleliste" da gibt man an wo eben die Textdatei hingespeichert werden soll(von wo sie geladen wird), in der die Daten der Liste gespeichert werden |
Re: seltsames Problem mit 2 Formularen
Hallo,
wo genau gebe ich die MySample ein. Benenne mal das Verzeichnis um, wo die bei dir jetzt drinsteht. Ich bekomme hier nur Abstürze und habe keine Lust, rumzuprobieren. Ausserdem find ich die Übergabe von Werten an das 2. Form nicht so gut, nimm lieber eine Methode SetValues, oder halt direkt properties, das macht das Debuggen sehr viel leichter. Heiko |
Re: seltsames Problem mit 2 Formularen
hi,
schonmal rießen dank, dass du dich da versucht hast durchzukämpfen Ich bekomme das mit SetValues nicht ganz hin, ich habe gerade mal in der Hilfe danach gesucht und dies nur als Eigenschaft von ner RadioGroup oder so gefunden. Wie kann ich die Methode denn benutzen um meinem 2. Formular den Zeiger zu übergeben, komm da leider nich hinter. |
Re: seltsames Problem mit 2 Formularen
Hallo,
SetValues ist eine Methode, die du selber schreibst, darin werden alle Parameter übergeben, die Form2 von Form1 braucht. Vorteil: übersichtlicherer Code besseres Debuggen Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz