AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TstringList // Form2 daten aus einer anderen Klasse lesen
Thema durchsuchen
Ansicht
Themen-Optionen

TstringList // Form2 daten aus einer anderen Klasse lesen

Ein Thema von sonny2007 · begonnen am 27. Aug 2009 · letzter Beitrag vom 28. Aug 2009
Antwort Antwort
Seite 1 von 2  1 2      
sonny2007

Registriert seit: 27. Aug 2009
39 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

TstringList // Form2 daten aus einer anderen Klasse lesen

  Alt 27. Aug 2009, 23:06
Hi LEute !

Folgendes Problem beschäftigt mich schon eine Weile.

Ich habe eine MainForm, eine Playlist_Klasse, und eine Form2.
In der Playlist_Klasse ist die TStringList.

Die wird aus der MainForm gefüttert. Also adden, counten etc funzt alles super.
Jetzt wird die Form2 aus der MainForm angezeigt.

Form2.Show; Wenn ich jetzt versuche aus der Form2 auf die Playlist_Klasse zu lesen geht nix.
Ich habe es testhalber mit einen einfachem count versucht.



Delphi-Quellcode:

unit window_playlist;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,Playlist_s0n_Klasse;

type
  TForm2 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;
  swPlaylist: Ts0nPlaylist;

implementation

{$R *.dfm}

procedure TForm2.FormCreate(Sender: TObject);
begin
swPlaylist := Ts0nPlaylist.Create;
end;

procedure TForm2.FormClick(Sender: TObject);
var test: integer ;
begin
test:=swPlaylist.GetCount;
showMessage(inttostr(test)); <---- da gibt er immer 0 zurück
end;

end.
Er gibt mir aber immer null zurück. Ich checke das nicht. Bitte um Hilfe.


mfg s0n
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: TstringList // Form2 daten aus einer anderen Klasse lese

  Alt 28. Aug 2009, 05:34
Du arbeitest auch mit 2 verschiedenen Instanzen der Klasse
Markus Kinzler
  Mit Zitat antworten Zitat
sonny2007

Registriert seit: 27. Aug 2009
39 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: TstringList // Form2 daten aus einer anderen Klasse lese

  Alt 28. Aug 2009, 06:17
Ich schimpfe mich selber als Anfänger. Könntest du mir das bitte erklären wie ich es richtig programmieren sollte ?
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#4

Re: TstringList // Form2 daten aus einer anderen Klasse lese

  Alt 28. Aug 2009, 06:51
Moin,
wir vermuten, dass du in Form1 ebenfalls eine Instanz von Ts0nPlaylist erstellst. Da du das gleiche in Form2 noch einmal machst, hast du 2 Instanzen der Klasse erzeugt. Jede Klasse führt natürlich die eigenen Daten, daher kennt die 2te Instanz nicht der Daten der Ersten.
Lösungen gibt es mehrere - man könnte z.B. die Klasse Ts0nPlaylist sich selbst erzeugen lassen (im initialization-Abschnitt der Unit) dann können alle auf diese zentrale Instanz zugreifen.
Ralph
  Mit Zitat antworten Zitat
kalmi01
(Gast)

n/a Beiträge
 
#5

Re: TstringList // Form2 daten aus einer anderen Klasse lese

  Alt 28. Aug 2009, 06:55
Moin moin,

Deine Playlist aus Form1 hat vielleicht den gleichen Namen, ist aber nicht die Gleiche.
Mit "swPlaylist := Ts0nPlaylist.Create; " generierst Du nur an anderer Stelle eine Playlist, die geuso heisst, wie die ind Form1.

wenn Du in Form1:
Delphi-Quellcode:
var
  Form1: TForm1;
  swPlaylist: Ts0nPlaylist;
vor dem implementation Teil einfügst und in der "unit window_playlist;" im uses Teil Form1 einfügst, kannst du
Delphi-Quellcode:
procedure TForm2.FormClick(Sender: TObject);
var test: integer ;
begin
test:=Form1.swPlaylist.GetCount;
showMessage(inttostr(test)); <---- dass gibt dann den gewünschten Wert zurück
end;
Gruss
Michael
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#6

Re: TstringList // Form2 daten aus einer anderen Klasse lese

  Alt 28. Aug 2009, 06:59
.. und hat damit eine zirkuläre Referenz, nicht besonders schön
Ralph
  Mit Zitat antworten Zitat
sonny2007

Registriert seit: 27. Aug 2009
39 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: TstringList // Form2 daten aus einer anderen Klasse lese

  Alt 28. Aug 2009, 07:07
Zitat von taaktaak:
Moin,
Lösungen gibt es mehrere - man könnte z.B. die Klasse Ts0nPlaylist sich selbst erzeugen lassen (im initialization-Abschnitt der Unit) dann können alle auf diese zentrale Instanz zugreifen.
Das alle auf dieselbe Instanz zu greifen, klingt für mich sehr plausibel.

Könntest du mir bitte ein kleines Beispiel zeigen wie die Klasse sich selbst erzeugt? Ich verstehe das jetzt ehrlich gesagt nicht so wirklich.
Und wie greife ich dann auf diese Instanz zu. Genauso wie bisher ?

mfg s0n
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#8

Re: TstringList // Form2 daten aus einer anderen Klasse lese

  Alt 28. Aug 2009, 07:21
sehr schematisch:

Delphi-Quellcode:
Unit PlaylistKlasse;

interface

type tPlaylist ...

               public

                function Count:Integer;

               end;

var Playlist : tPlaylist

implementation

...

initialization

  Playlist:=tPlaylist.Create(nil);
 
finalization

  FreeAndNil(Playlist);

end.
Alle Formulare etc. die die Unit "PlaylistKlasse" einbinden, können die von dieser Klasse veröffentlichten Methoden etc. nun nutzen. Aufruf z.B. mit Playlist.Count
Ralph
  Mit Zitat antworten Zitat
sonny2007

Registriert seit: 27. Aug 2009
39 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: TstringList // Form2 daten aus einer anderen Klasse lese

  Alt 28. Aug 2009, 07:42
Also ich habe jetzt in der Playlist Klasse folgendes geschrieben

Delphi-Quellcode:

var Playlist: Ts0nPlaylist;

implementation

constructor Ts0nplaylist.Create;
    begin
      inherited create;
      scPlayList := THashedStringList.Create;
      scActTrackIndex:= 0;
    end;

destructor Ts0nplaylist.Destroy;
  begin
    scPlaylist.Free;
    inherited destroy;
  end;

// eine menge Prozeduren und funktionen

initialization
Playlist := Ts0nPlaylist.Create;

finalization
FreeAndNil (Playlist);


end.
Wobei ich die initial.... auch diret in create schreiben könnte ( denke ich mal )


Ich habe es probiert so zu schreiben:
Delphi-Quellcode:
 
initialization
Playlist := Ts0nPlaylist.Create(Nil);
Da sagt er mir aber das ich zu viele PArameter angegeben habe.Ohne Nil nimmt er es an.

So nun aber zum eigentlichen. Es funzt irgendwie nicht. Ich kann aus der Form2 Unit alle propertys oder proceduren verwenden. Aber nicht aus der Mainform obwohl in Uses mit angewählt. DAs heißt, ich kann immernoch nicht von der Main FOrm und von Form2 auf die Playlist_Klasse zu greifen.
  Mit Zitat antworten Zitat
hoika

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

Re: TstringList // Form2 daten aus einer anderen Klasse lese

  Alt 28. Aug 2009, 08:05
Hallo,

hat das jetzt noch mit der PlayList zu tun ?
Wenn nicht, bitte neuen Thread aufmachen.


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:08 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