Entwickler-Ecke
Sonstiges (Delphi) - In Prozedur auf Eingabe warten
Jiss - So 15.11.09 17:44
Titel: In Prozedur auf Eingabe warten
Hi,
ich habe ein Button, mit dem eine Prozedur aufgerufen wird, welche einen linearen Ablauf hat.
Dabei werden Daten aus einer Datei ausgelesen und in ein StringGrid geschrieben.
Nun möchte ich, nachdem alle Daten im StringGrid vorhanden sind, solange den Ablauf der Prozedur unterbrechen, bis der User entsprechende Veränderungen an den Werten im StringGrid gemacht hat und mit einem Button "Änderungen Übernehmen" den Ablauf der restlichen Prozedur freigibt. Im Laufe der weiteren Prodzedur werden dann die geänderten Eingaben ausgewertet.
Wie kann ich das machen? Habe da keine Idee, um einen Prozess zu unterbrechen und mit einem Freigabe-Befehl an der Stelle fortzusetzen.
Gruß
Jiss
elundril - So 15.11.09 17:59
wie wäre es wenn du den teil der nachher ausgeführt werden soll in die onclickprocedure des "Änderung übernehmen"-Buttons platzierst?
lg elundril
Jiss - So 15.11.09 18:39
Ja, das wäre prinzipiell möglich. Allerdings wollte ich erstmal schauen, ob das auch so geht. Mir gehts um die Übersichtlichkeit des Programms, da ich dazu eine Dokumentation anfertigen muss. Aus diesem Grund wäre es von Vorteil, wenn die logischen Abläufe so zusammengehalten werden.
jaenicke - So 15.11.09 19:13
Jiss hat folgendes geschrieben : |
Ja, das wäre prinzipiell möglich. Allerdings wollte ich erstmal schauen, ob das auch so geht. |
Geht es rein theoretisch. Mit Application.ProcessMessages und Flags, die den aktuellen Status anzeigen.
Allerdings wird das dann vollkommen unübersichtlich und nicht mehr überschaubar. Zudem bekommst du dann Probleme mit Parallelisierungseffekten usw., so dass du sehr aufpassen musst was du wo machst.
Und wenn man dann eine riesige Prozedur schreibt, weiß ohnehin kein Mensch mehr was da passiert. Das kann man viel besser ereignisbasiert und modularisiert aufbauen, dann sieht man auch sehr schnell was passiert, wenn jemand anderes sich den Quelltext ansieht.
Windows ist nun einmal ereignisbasiert und das ist auch gut so. Wenn man dann mit Polling anfängt, handelt man sich nur unnötige Probleme ein und macht sich das Leben schwer.
Jiss hat folgendes geschrieben : |
Mir gehts um die Übersichtlichkeit des Programms |
Und warum bemühst du dich dann um das Gegenteil? :shock:
Reinhard Kern - Mo 16.11.09 01:55
Jiss hat folgendes geschrieben : |
...
Nun möchte ich, nachdem alle Daten im StringGrid vorhanden sind, solange den Ablauf der Prozedur unterbrechen, bis der User entsprechende Veränderungen an den Werten im StringGrid gemacht hat und mit einem Button "Änderungen Übernehmen" den Ablauf der restlichen Prozedur freigibt. Im Laufe der weiteren Prodzedur werden dann die geänderten Eingaben ausgewertet.
... |
Hallo,
eine übliche Methode, zurück zum linearen Ablauf zu kommen, ist ein "Experte" oder Wizard mit einer Seite pro Arbeitsschritt und Knöpfen wie "Weiter...".
Gruss Reinhard
jaenicke - Mo 16.11.09 02:28
Das ist hier ja nicht einmal das Problem, denn der zweite Knopf und damit die entsprechende Oberfläche existieren ja schon. Aber der ganze Code soll offenbar in einer einzigen langen und damit unüberschaubaren Monsterprozedur landen...
Zyklame - Mo 16.11.09 10:05
Hallo,
ich habe mal die Vermutung, das du die Analyse mehrfach verwenden / durchlaufen möchtest, so das der Quelltext davon nicht mehrfach vorhanden sein muss (in der Einlesen und Ändern Procedure). Dann währe es aber sinvoller, diese in eine eigene Procedure auszulagern und in den Ereignissen (ButtonClick...) aufzurufen.
thepaine91 - Mo 16.11.09 10:16
Also ich kann nur das selbe sagen wie auch andere vor mir. Mach die änderung bei (Änderung) und das einlesen auch genau dort.
Denn wenn ich mir einen Quellcode ansehe und dort dann deine Variante genutzt wäre. Würde ich erst mal den Kopf schütteln. ;)
Jiss - Mo 16.11.09 17:16
Ihr habt recht. Ich werde das in einer extra Prozedur machen und dann mit Hilfe von Fallunterscheidungen den Programmablauf definieren.
Vielen Dank für eure Hinweise!
Gruß Jiss
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!