![]() |
Zugriffverletzung
Hi @ all.
Habe folgendes Problem. Hier der Code:
Delphi-Quellcode:
Dieser Code fügt eine Datei mit vielen Dateinamen in meine Playliste ein.
procedure TForm1.LoadPlayList(Filename:string);
var list: TStringList; index: integer; Module: PFMusicModule; Stream: PFSoundStream; TracksCount: Integer; begin list:=TStringList.Create; list.LoadFromFile(Filename); TracksCount:=ListBox1.ItemIndex; for index:=0 to list.Count-1 do begin Stream := nil; Module := FMUSIC_LoadSong(PChar(list[Index])); if Module = nil then begin Stream := FSOUND_Stream_Open(PChar(list[Index]), FSOUND_NORMAL or FSOUND_LOOP_NORMAL, 0, 0); end; if (Module = nil) and (Stream = nil) then begin Application.MessageBox(FMOD_ErrorString(FSOUND_GetError), 'Konnte Datei nicht laden', MB_OK or MB_ICONHAND); Continue; end; if Module <> nil then begin FMUSIC_SetMasterVolume(Module, 255); if (FMUSIC_GetType(Module) = FMUSIC_TYPE_MOD) or (FMUSIC_GetType(Module) = FMUSIC_TYPE_S3M) then FMUSIC_SetPanSeperation(Module, 0.15); end; Tracks[TracksCount].Module := Module; Tracks[TracksCount].Stream := Stream; Tracks[TracksCount].Playing := False; //----Hier kommt der Fehler---------// ListBox1.Items.Add(ExtractFileName(list[index])); //---------------------------------// end; list.Free; end; Der fMod Code ist nicht so wichtig. Allerdings kommt es an der markierten Stelle immer zu einer Zugriffsverletzung. Kann mir wer sagen warum? MfG Flips |
Re: Zugriffverletzung
Hi,
Delphi-Quellcode:
zu
for index:=0 to list.Count-1 do
Delphi-Quellcode:
ämndern dann gehts.
for index:= 1 to list.Count-1 do
Win32.API |
Re: Zugriffverletzung
danke für die schnelle Antwort, aber dann gehts nur wenn die Datei genau einen Eintrag hat.
|
Re: Zugriffverletzung
Hallo,
ist index nicht ein reserviertes Wort? Tritt der Fehler immer auf, oder nur, wenn der ausgewählte index nicht existiert? Gina. |
Re: Zugriffverletzung
Zitat:
Zitat:
|
Re: Zugriffverletzung
Hi Flips,
dein Code ist in Ordnung, insbesondere an der markierten Stelle. Allerdings macht die Initialisierung von TrackCount keinen Sinn. Auch die unveränderte Verwendung von TrackCount in der Schleife leuchtet mir nicht ein. Grüße vom marabu |
Re: Zugriffverletzung
Komisch....
Ja, das TrackCount ist nur damit ich nicht überall ListBox1.ItemIndex; hinschreiben muss :p |
Re: Zugriffverletzung
Moin Flips,
nimm die Zeile in der der Fehler auftritt doch einmal "auseinander", also eine Stringvariable, die den Inhalt der Liste erhält, dann eine Zeile mit ExtractFilename, und schliesslich das Hinzufügen zur Listbox. Hast Du übrigens, nachdem Du index durch etwas anderes ersetzt hast nur compiliert, oder das Projekt neu erzeugt? |
Re: Zugriffverletzung
hi,
probiers mal, indem du
Delphi-Quellcode:
durch
ListBox1.Items.Add(ExtractFileName(list[index]));
Delphi-Quellcode:
ersetzt.
ListBox1.Items.Add(ExtractFileName(list.strings[index]));
bin mir nicht sicher, aber es könnte funktionieren so... |
Re: Zugriffverletzung
Moin Urban,
es würde mich wundern, wenn das einen Unterschied macht, denn Du kannst die Schreibweise ohne .Strings verwenden, da diese Eigenschaft in der Klasse TStrings als default deklariert wurde, so dass der Compiler beides gleichwertig verarbeiten sollte. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz