Autor |
Beitrag |
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 11.07.08 21:56
Moin!
ich habe ein Problem.Und zwar mit zwei klassen. Beispiel:
ich erstelle zwei klassen und in der einen procedure der zweiten klasse rufe ich die andere auf.
aber jetzt gibs ne zugriffsverletzung.
Was muss ich machen? 
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Fr 11.07.08 21:58
Nicht so viel Informationen, das kann doch keiner durchlesen! Diese riesen Mengen an Quellcode schon gar nicht!
...
Meine Glaskugel sagt mir, dass Du vorher noch irgendwo eine Instanz einer Klasse erzeugen musst.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Jerk
      
Beiträge: 251
Vista Ultimate, Ubuntu
Turbo Delphi 2006
|
Verfasst: Fr 11.07.08 22:22
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 11.07.08 23:15
Zitat: | Meine Glaskugel sagt mir, dass Du vorher noch irgendwo eine Instanz einer Klasse erzeugen musst. |
Dann frage bitte deine göaskugel wie das geht. 
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Fr 11.07.08 23:21
Wie wäre es, wenn Du erst einmal mehr Informationen lieferst, damit man weiß, ob das überhaupt der Fehler ist? Ich mach mir doch jetzt nicht die Mühe, um hinterher veilleicht festzustellen, dass das gar nicht der Fehler ist.
Dass Du nach meinem überdeutlichen Hinweis keine Informationen nachlieferst, ist schon ziemlich unverschämt! 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 12.07.08 10:20
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: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74:
| type TAudioFile = class private fInterpret: String; fTitel : String; fPfad : String; fDauer : Integer;
procedure GetMp3Info; procedure GetWmaInfo; procedure SetUnknown;
function GetPlaylistTitel: String;
public property Interpret: String read fInterpret write fInterpret; property Titel : String read fTitel write fTitel; property Pfad : String read fPfad; property Dauer : Integer read fDauer write fDauer; property PlaylistTitel: String read GetPlaylistTitel;
constructor Create; destructor Destroy; override;
procedure GetAudioInfo(filename: String); procedure Assign(aAudioFile: TAudioFile); end; TMeMPPlayer = class private fMainStream: DWord; fMainVolume: single; fMainAudioFile: TAudioFile; function MeMP_CreateStream(aFilename: String): DWord; procedure SetVolume(Value: single); function GetTime: Double; function GetProgress: Double; procedure SetProgress(Value: Double); function GetBassStatus: DWord; public property Volume: single read fMainVolume write SetVolume; property Time: Double read GetTime; property Progress: Double read GetProgress write SetProgress; property BassStatus: DWord read GetBassStatus; constructor Create; procedure SetPosition(Value: Longword); destructor Destroy; override; procedure InitBassEngine(HND: HWND); procedure Play(aAudioFile: TAudioFile); procedure Pause; procedure Stop; procedure Resume; procedure StopAndFree; end; implementation
procedure TMeMPPlayer.Play(aAudioFile: TAudioFile); begin if aAudioFile <> NIL then begin fMainAudioFile.Assign(aAudioFile); StopAndFree; fMainstream := MeMP_CreateStream(fMainAudioFile.Pfad); BASS_ChannelSetAttribute(fMainStream, BASS_ATTRIB_VOL, fMainVolume); BASS_ChannelPlay(fMainStream , True); end; end; procedure TForm1.FormCreate(Sender: TObject); begin
globalaudiofile:= TAUDIOfile.create; MEMPPLAYER:=TMEMPpLAYER.create; MeMPPlayer.InitBassEngine(Handle); MeMPPlayer.Volume := 1; end; |
Also hier ist der gewünschte quelltext.
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 12.07.08 10:24
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Sa 12.07.08 11:18
Ich habe jetzt noch nicht verstanden, wo da jetzt die Zugriffsverletzung kommt. 
_________________ We are, we were and will not be.
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 12.07.08 11:19
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| case MeMPPlayer.BassStatus of BASS_ACTIVE_STOPPED: begin MeMPPlayer.Play(GlobalAudioFile);end; BASS_ACTIVE_PLAYING: MeMPPlayer.Pause; BASS_ACTIVE_PAUSED : MeMPPlayer.Resume; end; end; |
|
|
mkinzler
      
Beiträge: 4106
Erhaltene Danke: 13
Delphi 2010 Pro; Delphi.Prism 2011 pro
|
Verfasst: Sa 12.07.08 11:29
Existiert den eine Instanz von TAudioFile?
_________________ Markus Kinzler.
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 12.07.08 11:32
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Sa 12.07.08 11:34
Darf ich Dich mal aus diesem Thread zitieren
j.klugmann hat folgendes geschrieben: | Dann würde ich erstmal mit einem einführungs buch anfangen. |
www.christian-stelzm...tierteprogrammierung
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 12.07.08 11:39
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Sa 12.07.08 12:05
Häng mal das ganze Projekt an. Da ist bestimmt irgendwo eine globale Variable lokal (dieses GlobalAudioFile ist im Tutorial nur temporär, das kommt später weg - nur so zur Verteidigung  ), oder wird irgendwo freigegeben, sodass der Zeiger zwar <> Nil, aber nicht mehr gültig ist... 
_________________ We are, we were and will not be.
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 12.07.08 12:33
OK hier ist er.
Moderiert von Christian S.: 500 Zeilen sind wohl als Anhang besser ...
Einloggen, um Attachments anzusehen!
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Sa 12.07.08 12:42
Bitte sag nicht, dass dein Code wirklich so ausieht. Das ist ja grausam - ich hoffe mal, dass das durch das Copy&Paste hier gekommen ist.
Das einzige, was mir so auffällt, ist das ganze NewInstance-Gedöns. Lass das mal weg, und erzeuge die Objekte so, wie im Tutorial gezeigt.
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 12.07.08 12:48
das war ein versuch nachdem ich an diesem fehler verzweifelt bin.-
was jetzt?
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Sa 12.07.08 12:51
Ich weiß auch nicht, was du da so machst. Ich habe in meinem ganzen Leben noch nie NewInstance benötigt - kannte das bisher nicht einmal. Und so, wie der Code formatiert ist, und mit den Bezeichnern, guck ich da nicht weiter durch. Das ganze Projekt (also pas, dpr, dfm, etc) könnte ich mal durchgucken, wo der Compiler/Debugger meckert.
Ein paar OOP-Grundlagen wären aber sicherlich nicht verkehrt. 
_________________ We are, we were and will not be.
|
|
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 12.07.08 12:59
|
|
Dunkel
      
Beiträge: 682
Mac OS X Snow Leopard
Xcode 3.1
|
Verfasst: Sa 12.07.08 13:04
_________________ Ich streite einsam mich mit dieser Oberflächenwelt
Gutes sei ein löblich Brot von dem ich zehre - bis zum Tod [Das Ich - Im Ich]
|
|