Autor Beitrag
Jiss
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 15.11.09 17:44 
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: 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

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Jiss Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 15.11.09 19:13 
user profile iconJiss hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconJiss hat folgendes geschrieben Zum zitierten Posting springen:
Mir gehts um die Übersichtlichkeit des Programms
Und warum bemühst du dich dann um das Gegenteil? :shock:
Reinhard Kern
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 591
Erhaltene Danke: 14



BeitragVerfasst: Mo 16.11.09 01:55 
user profile iconJiss hat folgendes geschrieben Zum zitierten Posting springen:
...
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41
Erhaltene Danke: 1

Win 7 Professional
Delphi XE, Visual Studio 2010
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: 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