AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Threads : Anwendung <-> Daten <-> Visuelles Element (Chart
Thema durchsuchen
Ansicht
Themen-Optionen

Threads : Anwendung <-> Daten <-> Visuelles Element (Chart

Ein Thema von moelski · begonnen am 2. Nov 2009 · letzter Beitrag vom 2. Nov 2009
Antwort Antwort
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

Threads : Anwendung <-> Daten <-> Visuelles Elem

  Alt 2. Nov 2009, 06:39
Moin !

Ich überlege schon eine ganze Weile wie man es hinbekommt, ein visuelles Element (inmeinem Fall ein TChart) zu speichern bzw. zu laden ohne den Hauptprozess dabei zu belasten oder gar zu blockieren (verwende MDI Childs mit jeweils einem TChart).
Dabei geht es konkreter um diese drei Zustände:
* laden
* speichern während Daten hinzugefügt werden
* speichern wenn keine Daten hinzugefügt werden

Das ganze ist nicht wirklich ohne Threads zu lösen. Aber da fangen dann die Probleme auch schon wieder an - Stichwort "Threads und Zugriff auf VCL Komponenten".

Egal wie ich es versuche, ich habe immer Situationen in denen mein Hauptthread geblockt wird. Das mag aber auch daran liegen, das ich derzeit die Daten direkt in das Chart eintrage. Nehmen wir nur das Speichern während noch Daten eingetragen werden.
Ich erzeuge mir einen MemoryStream, kopiere (in diesem Fall) das Chart in den Stream, übergebe den Stream an einen Thread der dann den Stream als Datei speichert.
Aber auch hier hat man schon wieder die Situation dass das Kopieren des Charts in den Stream im Hauptthread erledigt wird. Bei großen Datenmengen -> Blockingpoint

Kurzum, kann vielleicht mal jemand erklären wie man dieses Problem grundlegend anpacken würde? Das muss gar nicht mal auf ein Chart bezogen sein. Es ist übrigens nicht damit getan, einfach nur (im Fall des Charts) die Rohdaten zu speichern. Denn im Chart werden Charttools eingebunden die natürlich mit gespeichert werden müssen.

Ich hatte schon die Idee das man das evtl. über Windowsbotschaften lösen könnte. Aber der Thread hat ja keine MessageQueue. Insofern ist das auch hinfällig.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#2

Re: Threads : Anwendung <-> Daten <-> Visuelles

  Alt 2. Nov 2009, 08:52
Wenn du auf das VCL-Control zugreifst, dann muß das eh innerhalb des Hauptthread (der wo die VCL drinnen läuft) geschehen.

Lösung:
Da man eh keine Daten in visuellen Komponenten speichert ... leg deine Daten in einer seperaten Variable/Datenstruktur ab und speicher dann einfach diese.
In das TChart werden dann nur (Teile) dieser Daten zur Anzeige übertragen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Threads : Anwendung <-> Daten <-> Visuelles

  Alt 2. Nov 2009, 09:01
Moin !

Zitat:
Da man eh keine Daten in visuellen Komponenten speichert ... leg deine Daten in einer seperaten Variable/Datenstruktur ab und speicher dann einfach diese.
Das ist sicher eine Lösung. Aber leider löst es das Problem nur zur Hälfte.

Wir möchten die Grafik ja in Gänze abspeichern. Denn dort können alle möglichen Änderungen eingebracht werden - neben den reinen Daten. Bsp:
- Beschriftungen
- Änderungen an Achsentiteln
- Annotation mit Zeiger
- ...

Dann müssten wir den Kram auch komplett abbilden. Damit würden wir dann aber die halbe Grafik engine neu proggen. Das kann ja nicht des Rätzels Lösung sein, oder?

Vielleicht nehmen wir mal anstatt des TChart ein RichView. Dort schreibt man ja zwangsläufig direkt den Text rein - ergo hält das Element auch erstmal die Daten. Wie würde man es damit lösen?
Denn auch hier das gleiche Problem. Wenn wir Daten in einem Chart aufzeichnen, dann könnte der User das RTF parallel speichern. Und wenn da Bilder eingefügt sind, dann blockt das auch wieder den Mail Thread.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz