Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Das gleiche Programm mehrmals in sich selbst ausführen


HenryHux - Mi 17.11.10 14:29
Titel: Das gleiche Programm mehrmals in sich selbst ausführen
Hi, war schwierig das in eine passende Überschrift zu packen.
Ich habe ein Programm, welches ich mehr mals geöffnet brauche.
Aber anstatt das x mal aufzumachen, wäre es aber besser es x mal in ein Projekt zu packen.
Könnte ich mit verschiedenen Formen realisieren, das wäre ja soweit kein Problem.
Vorher wollte ich aber mal fragen wie das mit der Performance läuft.
Das Programm arbeitet mit repeat-Schleifen. Ich denke man kann 2 solche Schleifen nicht gleichzeitig in einer Form laufen lassen, deshalb auch zwingend mehrere Formen.
Kann man denn verschiedene Formen wie verschiedene Programme behandeln lassen?
Sprich ich habe x Formen und in jedem läuft eine Repeat-Schleife ohne großen Rechen-verlust?

Lg

Henry


platzwart - Mi 17.11.10 14:32

Nein. Formen haben damit rein garnichts zu tun! Das ist nur eine graphische Oberfläche, sonst garnix. Was du suchst, sind Threads. Das sind umgangssprachlich ausgedrückt "Programmteile", die unabhängig vom restlichen Programm laufen. Such mal nach Threads.


Gausi - Mi 17.11.10 14:32

Auch wenn du mehrere Formen hast, kann darin immer nur eine Repeat-Schleife gleichzeitig laufen. Alle Fenster einer Delphi-Anwendung laufen im selben Thread, und der kann immer nur eine Sache gleichzeitig machen. Du müsstest mit mehreren Threads arbeiten, oder die Anwendung wirklich mehrfach starten.
Wie der "Rechenverlust" aussieht, hängt von dem Problem ab und davon, wie es genau realisiert wird. Was hast du denn vor?


HenryHux - Mi 17.11.10 15:07

Das Programm ist für Bilderverarbeitung eig viele verschiedene Dinge.
Zumindest isses nen langer Quelltext, den ich natürlich viel veränder und deswegen bin ich bis jetzt davon zurückgeschreckt Threads zu benutzen, denn dafür müsste ich das X-Mal kopieren oder?
Wäre natürlich nen hoher Wartungsaufwand.

Lg

Henry


elundril - Mi 17.11.10 15:30

wenn es immer das gleiche ist, dann nicht. Dann erstellst du einmal ein Threadobjekt, welches du dann immer instanzierst und fertig. Vielleicht solltest du dir mal ein Tutorial [http://www.delphi-treff.de/tutorials/objectpascal/threads/einleitung/] dazu durchlesen.

lg elundril


HenryHux - Mi 17.11.10 15:34

Hab mir das schonmal durchgelesen, aber ich bräuchte ja sagen wir 3-4 verschiedene Grafische Oberflächen.
Sollen zwar alle gleich sein aber die Variablen und anderen Ressourcen sollen nur für den jeweiligen Thread gelten und dabei am besten die gleichen Namen behalten.
Da werde ich wahrscheinlich nicht um 3-4 verschiedene Formen mit jeweils einem Thread herumkommen, oder?


jaenicke - Mi 17.11.10 15:44

Ein Thread kann nicht direkt visuelle Komponenten ansprechen. Mittels Synchronisation schon, aber dann muss auch immer zum Hauptthread geschaltet werden dafür.

Wahrscheinlich solltest du besser dein Konzept überdenken, wenn möglich. Wir können dazu mit den vorliegenden Infos nix sagen. :nixweiss:


Bergmann89 - Mi 17.11.10 15:45

Hey,

wenn die Formen identisch sind, dann kannst du auch einfach mehrere Form-Objekte erstellen. Das is ja auch bloß ne Klasse.

MfG Bergmann.


platzwart - Mi 17.11.10 17:21

Das, was du vorhast, schreit geradezu nach Threads, genau dafür sind die doch gedacht?!? Lies dich ein wenig in Threads ein, dann wirst du das sicherlich sauber hinbekommen.


jaenicke - Mi 17.11.10 18:10

user profile iconplatzwart hat folgendes geschrieben Zum zitierten Posting springen:
Das, was du vorhast, schreit geradezu nach Threads, genau dafür sind die doch gedacht?!?
Nicht für die Ansteuerung visueller Komponenten. Je nach Aufgabenstellung kann es genau eher ungünstig sein, wenn da mehrere Threads laufen. Denn wenn alle Millisekunde der Thread synchronisiert wird, bringt der auch nix.

Aber ohne zu wissen was da eigentlich passieren soll, können wir auch nix dazu sagen. :nixweiss:


BenBE - Do 18.11.10 08:20

Außerdem würde es sich empfehlen, an dieser Stelle einmal auf ein Tutorial zu OOP hinzuweisen, oder auf das, was diese meist verschweigen [http://www.christian-rehn.de/2010/09/20/was-die-oop-tutorials-verschweigen/] ;-)

Grundlegend bräuchten wir aber erstmal ein wenig Source oder anderweitig detailliertere Informationen zum Vorhaben, weil leider macht meine Kristallkugel - genauso wie ich auch - derzeit Urlaub, leider aber in nem anderen Erdteil.


HenryHux - Do 18.11.10 15:35

So, das geht in meinem Programm nicht habe ich gerade herausgefunden, Threads sinnvoll einzusetzen.
Danke trotzdem, der Link von BenBE ist gut um ein bisschen mehr über OOP zu lernen.

Danke =)

Lg

Henry

PS: Hundertster Post :D