Autor Beitrag
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Mi 09.07.03 14:27 
Hallo,
ersteinmal folgenden code habe ich:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
unit thredUnit;

interface

uses
  Classes,Dialogs;


type
  Test1 = class(TThread)
  private
    { Private-Deklarationen }
  protected
  public
    procedure Execute; override;
  end;

implementation

uses soundsystem;


procedure Test1.Execute;
var
  t:Integer;
begin
  t:=0;
  while (Not Terminated) and (t=0do  
//   *

end;

end.
type
  TSound = class
    private
      GoFlag:Integer;
      test:Test1;
    protected

    public
      PlayListe: array of TPlayListe;
      Random_Music: array of TPlayListe;
      constructor create(pSoundFiles,SoundDir,DefaultExt:String;flag:Integer); // Lädt die Angebenden Sound Files
      
      procedure NewMusik;
      procedure NewMusik2;
      procedure LoadMusikFile(Index:Integer;RM:Boolean);
      procedure AddPlayListe(FileName:String); // Fügt der Playliste eine Datei hinzu
      procedure PlayMusikFile(Index:Integer);
  end;

da wo das * soll die procdedure NewMusik aufgerufen werden, aber wie mache ich das ?
er finded als funktion nur die crate eingenschaft.
hat da jemmand eine idee ?

_________________
MFG
Michael Springwald, "kann kein englisch...."


Zuletzt bearbeitet von mimi am Mi 09.07.03 22:33, insgesamt 2-mal bearbeitet
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Mi 09.07.03 14:38 
Titel: Re: Klassen Problem: er finde die funktion nicht.
mimi hat folgendes geschrieben:
er finded als funktion nur die crate eingenschaft.

Du befindest dich da ja auch im Sichtbarkeitsbereich von Test1 (wo ist da eigentlich das führende "T", oder heißt die Klasse etwa est1 ? :wink: ) und da gibt es nun mal keine NewMusik Methode. Diese gehört zum Sichtbarkeitsbereich von TSound. Du musst also in diesen Sichtbarkeitsbereich eintreten und das kannst du über die globale Variable Sound.

_________________
Ist Zeit wirklich Geld?
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Mi 09.07.03 14:44 
wie meinst du das ?
ich wollte keine variable definieren in der 1. klasse für sound.
könntes du mal ein beispiel machen wie du das meinst?

naja das t habe ich einfach weggelassen, weil es ja einfach nur ein Test da stellen soll.

Edit:
fehler gemacht beim posten: die gobale varibal sound gibt es garnicht. das war nur ein test aber so will ich das nicht machen weil es dann nicht mehr so geht wie ich es haben will.

_________________
MFG
Michael Springwald, "kann kein englisch...."
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Mi 09.07.03 15:07 
Hi mimi,

hast du das so in der unit stehen?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
...
end

end
type 
  TSound = class 
    private 
      GoFlag:Integer;

...


Wenn ja, dann sollte dir klar sein, dass Quellcode nach 'end.' komplett ignoriert wird :wink:

Ansonsten musst du schon irgendwo einer referenz auf dein sound-obj haben, sonst is asche.

_________________
mfg.
mâximôv
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Mi 09.07.03 15:13 
die klassen habe ich in zwei units aufgeteielt.
das geht leider nicht was du vorschlägt, da ich dann eine neue instanz der sound klasse erstellen müsste, aber das bringt leider nichts, weil ich die "Alten" werte haben wollte. gibt es da eine lösung für ?

_________________
MFG
Michael Springwald, "kann kein englisch...."
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Mi 09.07.03 15:19 
Wie würdest du denn auf NewMusik zugreifen, wenn du nicht in einem TThread wärst?

Zitat:
da ich dann eine neue instanz der sound klasse erstellen müsste

Also hast du schon irgendwo eine Instanz auf die du zugreifen kannst. Dann nimm doch diese.

_________________
Ist Zeit wirklich Geld?
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Mi 09.07.03 16:59 
problem: diese ist in einer anderen klasse definiert, und deshalb kann ich da auch nicht draufzugreifen. Gibt es noch weitere lösungen ?

_________________
MFG
Michael Springwald, "kann kein englisch...."
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Mi 09.07.03 17:12 
Du könntest dem Konstruktor des Threads die Instanz übergeben.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
  TTest1 = class(TThread) 
  private 
    { Private-Deklarationen } 
    FSound: TSound;
  protected
    procedure Execute; override
  public 
    constructor Create(ACreateSuspended: Boolean; Sound: TSound);
  end

constructor TTest1.Create(ACreateSuspended: Boolean; Sound: TSound);
begin
  FSound := Sound;
  inherited Create(ACreateSuspended);
end;


Execute ist übrigens als protected deklariert und sollte da auch bleiben.

_________________
Ist Zeit wirklich Geld?
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Mi 09.07.03 19:36 
ja stimmt hatte ich geänder aus einem andern grund,
kann man den consstructor eifnach so überschreiben ?
werde ich gleich mal testen.

_________________
MFG
Michael Springwald, "kann kein englisch...."
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Mi 09.07.03 19:58 
Da es kein virtueller Konstruktor wie bei TComponent ist: Ja.

_________________
Ist Zeit wirklich Geld?
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Mi 09.07.03 20:04 
danke, es hat funktiniert, aber leider habe ich noch kleiner fehler drin die ich aber selbst behben muss.

_________________
MFG
Michael Springwald, "kann kein englisch...."