Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Vaiable bekannt machen (https://www.delphipraxis.net/194234-vaiable-bekannt-machen.html)

EWeiss 31. Okt 2017 19:08


Vaiable bekannt machen
 
ich habe ne Variable Session ein einfaches Property of string.

jetzt habe ich 2 Klassen in der einen wird session angelegt, der anderen ist die nicht bekannt.
Wie kann ich diese jetzt der 2 Klasse bekannt machen ohne das ich diese über 4>5 Funktionen durchschleifen muss.

Delphi-Quellcode:
TTheMDB = class

private
  FSession: string;
public
  property Session: string read GetSession write SetSession;

Delphi-Quellcode:
TMovieDataList = class
private
  procedure addMovieData(aJson: TJSON; QueryMode: BOOL; Session: string);
  procedure fillfromJson(const aJsonString: string; QueryMode: BOOL; Session: string);
  procedure FillList(aJson: TJSON; QueryMode: BOOL; Session: string);
public
  constructor create(const aJsonString: string; QueryMode: BOOL; Session: string);
Delphi-Quellcode:
function TTheMDB.GetMovieInfo(MovieTitle: string): boolean;
var

  lWideFileData: string;

begin
  Result := False;
  try
    if GetMovieInfoString(MovieTitle, lWideFileData) then
    begin
      Session := UpperCase(MidStr(MovieTitle, Length(MovieTitle) - 6, 7));
      flist := TMovieDataList.create(lWideFileData, QueryMode, Session);
    end;
    Result := ValidData;
  except
    on e: exception do
      ShowMessage(e.Message);
  end;
end;
Ich möchte also Session nicht durch die ganzen Funktionen durchschleifen.
Geht das eleganter?

gruss

Dalai 31. Okt 2017 19:43

AW: Vaiable bekannt machen
 
Es würde doch langen, den im Konstruktur von TMovieDataList übergebenen Parameter Session in ein privates Feld (z.B. FSession) derselben Klasse zu speichern, so dass dieses Feld in den anderen Methoden verwendbar ist. Übersehen ich etwas?

Grüße
Dalai

EWeiss 31. Okt 2017 19:45

AW: Vaiable bekannt machen
 
Zitat:

Zitat von Dalai (Beitrag 1384669)
Es würde doch langen, den im Konstruktur von TMovieDataList übergebenen Parameter Session in ein privates Feld (z.B. FSession) derselben Klasse zu speichern, so dass dieses Feld in den anderen Methoden verwendbar ist. Übersehen ich etwas?

Grüße
Dalai

Verstehe jetzt nicht wie du das meinst.
Versuche gerade ne Basis Class dafür anzulegen.

so das beide von dieser erben können.

gruss

Dalai 31. Okt 2017 20:50

AW: Vaiable bekannt machen
 
Zitat:

Zitat von EWeiss (Beitrag 1384671)
Verstehe jetzt nicht wie du das meinst.

Delphi-Quellcode:
TMovieDataList = class
private
  FSession: string;
  procedure addMovieData(aJson: TJSON; QueryMode: BOOL);
  procedure fillfromJson(const aJsonString: string; QueryMode: BOOL);
  procedure FillList(aJson: TJSON; QueryMode: BOOL);
public
  constructor create(const aJsonString: string; QueryMode: BOOL; Session: string);

implementation

constructor TMovieDataList.Create(...)
begin
  inherited Create;
  FSession:= Session;
  ...
end;
Einmalig übergeben, in der Klasse speichern und nutzen. Geht natürlich nur, wenn es immer dieselbe Session ist.

Grüße
Dalai

EWeiss 31. Okt 2017 20:56

AW: Vaiable bekannt machen
 
Zitat:

Zitat von Dalai (Beitrag 1384673)
Zitat:

Zitat von EWeiss (Beitrag 1384671)
Verstehe jetzt nicht wie du das meinst.

Delphi-Quellcode:
TMovieDataList = class
private
  FSession: string;
  procedure addMovieData(aJson: TJSON; QueryMode: BOOL);
  procedure fillfromJson(const aJsonString: string; QueryMode: BOOL);
  procedure FillList(aJson: TJSON; QueryMode: BOOL);
public
  constructor create(const aJsonString: string; QueryMode: BOOL; Session: string);

implementation

constructor TMovieDataList.Create(...)
begin
  inherited Create;
  FSession:= Session;
  ...
end;
Einmalig übergeben, in der Klasse speichern und nutzen. Geht natürlich nur, wenn es immer dieselbe Session ist.

Grüße
Dalai

Nein die ändert sich mit jedem laden.

gruss

Dalai 31. Okt 2017 21:30

AW: Vaiable bekannt machen
 
Zitat:

Zitat von EWeiss (Beitrag 1384674)
Nein die ändert sich mit jedem laden.

Und die Instanz der Klasse TMovieDataList bleibt aber bestehen?

Grüße
Dalai

EWeiss 31. Okt 2017 21:35

AW: Vaiable bekannt machen
 
Zitat:

Zitat von Dalai (Beitrag 1384675)
Zitat:

Zitat von EWeiss (Beitrag 1384674)
Nein die ändert sich mit jedem laden.

Und die Instanz der Klasse TMovieDataList bleibt aber bestehen?

Grüße
Dalai

Ja solange wie die Anwendung läuft.
Habe es mit einer Basis Classe versucht aber FSession ist leer sobald ich diese mit der TMovieDataList abfrage.
Die Session wird in der classe TTheMDB erstellt.

Beide classen erben von der Basis Classe

TTheMDB = class(TBasisClass) usw..
Ist mir jetzt zu viel stress.. glaube schleife die einfach durch und gut ist.

Danke..

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:04 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