| Autor |
Beitrag |
mimi
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Mi 09.07.03 14:27
Hallo,
ersteinmal folgenden code habe ich:
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 protected public procedure Execute; override; end;
implementation
uses soundsystem;
procedure Test1.Execute; var t:Integer; begin t:=0; while (Not Terminated) and (t=0) do
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); procedure NewMusik; procedure NewMusik2; procedure LoadMusikFile(Index:Integer;RM:Boolean); procedure AddPlayListe(FileName:String); 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
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: 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 ?  ) 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 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: 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
      
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: Mi 09.07.03 15:07
Hi mimi,
hast du das so in der unit stehen?
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
Ansonsten musst du schon irgendwo einer referenz auf dein sound-obj haben, sonst is asche.
_________________ mfg.
mâximôv
|
|
mimi 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: 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
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: 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 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: 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
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: Mi 09.07.03 17:12
Du könntest dem Konstruktor des Threads die Instanz übergeben.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| TTest1 = class(TThread) private 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 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: 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
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: Mi 09.07.03 19:58
Da es kein virtueller Konstruktor wie bei TComponent ist: Ja.
_________________ Ist Zeit wirklich Geld?
|
|
mimi 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: 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...."
|
|