AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi VCL-Kompon.-Datenstruktur nur aus Form1-Unit nutzbar ??
Thema durchsuchen
Ansicht
Themen-Optionen

VCL-Kompon.-Datenstruktur nur aus Form1-Unit nutzbar ??

Ein Thema von EccoBravo · begonnen am 27. Apr 2009 · letzter Beitrag vom 27. Apr 2009
Antwort Antwort
Benutzerbild von EccoBravo
EccoBravo

Registriert seit: 19. Okt 2004
Ort: Neuruppin
524 Beiträge
 
Delphi 2007 Architect
 
#1

VCL-Kompon.-Datenstruktur nur aus Form1-Unit nutzbar ??

  Alt 27. Apr 2009, 14:52
Hallo,

will datenintensive Datenstruktur einer VCL-Komponente K_EB_DCM, geladen in der Form1-Unit U_EB meines Projektes P_EB, aus einer Unterprogramm-Unit U_EB_DCM heraus mit Daten versorgen.

Das geht aber nicht, da es sich bei K_EB_DCM um eine VCL-Komponente handelt.
Es kommt die Compilermeldung zur Laufzeit in U_EB_DCM:
Im Project P_EB.exe ist eine Exception der Klasse EAccessViolation mit der Meldung "Zugriffsverletzung bei Adresse 0045E123 in Modul P_EB.exe".Schreiben von Adresse 000001B0 aufgetreten.

Wozu dieser Quatsch ?:

Die in der VCL-Komponente benötigte Datenmenge/Datenstruktur ist sehr groß.

Die Unterprogramm-Unit U_EB_DCM dient zum Einlesen der Daten aus einer Datei.

Die Datenmenge/Datenstruktur, die von der Komponente K_EB_DCM benötigt wird, ist sehr groß.
Die Daten sollen beim Einlesen gleich in die Datenstruktur der Komponente K_EB_DCM geschoben werden.

Die Komponente K_EB_DCM selbst soll dem Projekt als Speicher für die Datenmange/Datenstruktur dienen.
(ich will diese Datenmenge/Datenstruktur nicht zweimal in meinem Project anlegen)

Geht das überhaupt ?
Wenn ja, wie geht das ?
Gibt es eine bessere Lösung ?

Danke für Hilfe

EB
Wahre Aussage :=
Katzen, die bellen sind keine Kaninchen.

Der Kreisverkehr ist eine spezielle Form der Einbahnstraße
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#2

Re: VCL-Kompon.-Datenstruktur nur aus Form1-Unit nutzbar ??

  Alt 27. Apr 2009, 15:05
Ja, es gibt eine bessere Lösung.

Du packst die Datenstruktur in eine eigene Unit.
Diese Unit wird dann sowohl von der Unit die die Daten einliest als auch von der Komponente verwendet.

Der Speicher wird von der Unit reserviert, die die Daten einliest. Die Komponente selber erhält dann nur eine Referenz auf diese Daten.

Da Du nicht mit mehr Informationen rausrückst wie die Komponente die Daten derzeit verwendet und wie Du Dir das ganze im Detail vorstellst kann ich auch nicht konkreter werden. Aber wenn die Daten wirklich nur einmal im Speicher liegen sollen ist vielleicht das Stichwort 'Singleton' noch eine Alternative.

Edit nachtrag:
Wenn es eine Komponente sein soll, die nur die Daten hält, dann könntest Du diese ggf. auch auf ein Datenmodul legen, und dieses Datenmodul von allen benötigten Units aus anziehen.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: VCL-Kompon.-Datenstruktur nur aus Form1-Unit nutzbar ??

  Alt 27. Apr 2009, 15:07
Hallo,

da es sich um eine Klasse handelt,
übergebe die Variable deinem Unterprogramm als Parameter.


Delphi-Quellcode:
Datei: UEB.pas
TForm1 = class(TForm)
  K_EB_DCM: TK_EB_DCM;

implementation

procedure TForm1.LoadData;
begin
  _LoadData(K_EB_DCM);
end;

==========================

Datei U_EB_DCM.pas

interface

procedure _LoadData(theK_EB_DCM: TK_EB_DCM);

implementation

procedure _LoadData(theK_EB_DCM: TK_EB_DCM);
begin
  theK_EB_DCM.Name:= 'hoika' ;)
end;

Heiko
Heiko
  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 07:14 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