AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Programm mit Zugriffsverletzung - 1. PC funktioniert - 2. Nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Programm mit Zugriffsverletzung - 1. PC funktioniert - 2. Nicht

Ein Thema von Kathmai · begonnen am 11. Apr 2014 · letzter Beitrag vom 15. Apr 2014
Antwort Antwort
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.561 Beiträge
 
Delphi 12 Athens
 
#1

AW: Programm mit Zugriffsverletzung - 1. PC funktioniert - 2. Nicht

  Alt 14. Apr 2014, 00:40
Es wird im Übrigen nicht auf eine Variable des Hauptthreads zugegriffen, sondern beide Variablen FImages (Form, ImageDatasource) verweisen auf eine Instanz. Die Variablen sind aber unabhängig voneinander.
Ja, hätte ich natürlich etwas genauer beschreiben müssen.

ABER Deine Aussage "Die Variablen sind aber unabhängig" stimmt das wirklich?

Im Oncreate der Form findet ja folgendes statt:
Delphi-Quellcode:
FImages := TImageDataSource.Create;
  // Create thread with image loader
  FSplashImageLoader := TSplashImagesLoader.Create;
  FSplashImageLoader.Form := Self;
  FSplashImageLoader.DataSource := FImages;
Nach meinem Verständnis verweist dann sowohl Form.FImages und FSplashImageLoader.FImages auf ein und dieselbe Instanz. Oder?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Programm mit Zugriffsverletzung - 1. PC funktioniert - 2. Nicht

  Alt 14. Apr 2014, 00:43
Es wird im Übrigen nicht auf eine Variable des Hauptthreads zugegriffen, sondern beide Variablen FImages (Form, ImageDatasource) verweisen auf eine Instanz. Die Variablen sind aber unabhängig voneinander.
Ja, hätte ich natürlich etwas genauer beschreiben müssen.

ABER Deine Aussage "Die Variablen sind aber unabhängig" stimmt das wirklich?

Nach meinem Verständnis verweist dann sowohl Form.FImages und FSplashImageLoader.FImages auf ein und dieselbe Instanz. Oder?
Genau die verweisen beide auf die gleiche Instanz. Die Variablen sind aber unabhängig!
Jeder dieser Variablen kann ich beliebige Werte zuweisen ohne die andere Variable zu beeinflussen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.561 Beiträge
 
Delphi 12 Athens
 
#3

AW: Programm mit Zugriffsverletzung - 1. PC funktioniert - 2. Nicht

  Alt 14. Apr 2014, 00:48
Genau die verweisen beide auf die gleiche Instanz. Die Variablen sind aber unabhängig!
Jeder dieser Variablen kann ich beliebige Werte zuweisen ohne die andere Variable zu beeinflussen.
OK, bei genauem Nachdenken stimme ich Dir zu. Was ich meine, ist, dass diese Variablen auf ein und die gleiche Instanz verweisen und wenn ich ÜBER die unterschiedlichen Variablen in unterschiedlichen Threads auf ein- und dieselben Daten der einen Instanz zugreife, dann kann das problematisch sein.
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.561 Beiträge
 
Delphi 12 Athens
 
#4

AW: Programm mit Zugriffsverletzung - 1. PC funktioniert - 2. Nicht

  Alt 14. Apr 2014, 00:56
So, habe Deine Ergänzung eingebaut, es wird keine Exception geworfen, es fehlt einfach der Inhalt der letzten beiden Bilder (Die beiden Bitmaps selbst sind einfach nur NIL).

OK, glaube wir werden das heute Abend (Nacht) nicht mehr lösen. Ich nehme jetzt mal ein paar Stunden Schlaf.

Geändert von Harry Stahl (14. Apr 2014 um 00:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Programm mit Zugriffsverletzung - 1. PC funktioniert - 2. Nicht

  Alt 14. Apr 2014, 22:44
Gerade entdeckt
TThread.Synchronize() and TThread.Queue() do not work correctly in FireMonkey
Ob das hier mit reinspielt glaube ich nicht, ist aber schon peinlich ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.561 Beiträge
 
Delphi 12 Athens
 
#6

AW: Programm mit Zugriffsverletzung - 1. PC funktioniert - 2. Nicht

  Alt 15. Apr 2014, 19:47
Gerade entdeckt
TThread.Synchronize() and TThread.Queue() do not work correctly in FireMonkey
Ob das hier mit reinspielt glaube ich nicht, ist aber schon peinlich ...
Nein, daran liegt es wohl nicht, wenn man den WorkAround von Lemmy verwendet, funktioniert das Demo hier trotzdem nicht.

Das Demo funktioniert auch unter XE6 übrigens nicht!!

Na ja, ich will ja hier nicht meckern, bin in erster Linie jetzt mal froh um die vielen Verbesserungen und Fixes in XE6 (die Fixliste ist wirklich lang).

Erledigt ist aber leider längst noch nicht alles... Aber die Richtung stimmt. Insofern: Weiter so, EMBA
  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 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-2025 by Thomas Breitkreuz