Re: EStringListError aufgetreten (delphi7)
jetzt meine dumme Frage weas meinst du den mit Grenzen ?
|
Re: EStringListError aufgetreten (delphi7)
Delphi-Quellcode:
for <Untere Grenze> to <Obere Grenze>;
|
Re: EStringListError aufgetreten (delphi7)
:oops: :oops:
Delphi-Quellcode:
habe aber kein to
procedure TForm1.ListBox1Click(Sender: TObject);
var i : integer; begin [b][u] for[/u][/b] i :=0 to listbox1.Count -1 do if listbox1.Selected[i] then break; { nun haben wir in i die nummer der selektierten Zeile da Listbox und Playlist eine identische Reihe der Einträge und gleiche Sortierung vorweisen, können wir mit dem erhaltenen index den richtigen Eintrag der Playlist auslesen. } PlayFile(i); end; procedure TForm1.MediaPlayer1Notify(Sender: TObject); // unser neues Notify-Event begin if mediaplayer1.Position = mediaplayer1.Length then begin // position = gesamtlänge, bedeutet dass das lied beendet wurde Listbox1.Selected[currentSong] := false; // das gerade gespielte lied de-selektieren inc(currentSong); // aktuellen song um eines erhöhen if currentSong < Playlist.Count -1 then { alles passt, songindex im rahmen} else currentsong := 0; {ende der liste erreicht, setze aktuelles lied auf anfang} PlayFile(CurrentSong); Listbox1.Selected[currentSong] := true; // das aktuelle lied selektieren end; end; end. [edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit] |
Re: EStringListError aufgetreten (delphi7)
Die Zählvariable einer for-Schleife ist nach dem Durchlauf immer undefiniert.
Da Du "Playfile(i)" erst nach der Schleife aufrufst >kann< in i irgendein beliebiger Wert stehen. Probier es mal so:
Delphi-Quellcode:
Ach und wo wir schon dabei sind. Indices in Delphi sind immer nullbasierend. Also sollte deine Schleife von 0 bis ...Count - 1 laufen.
for i := 0 to listbox1.Count - 1 do
if listbox1.Selected[i] then begin { nun haben wir in i die nummer der selektierten Zeile da Listbox und Playlist eine identische Reihe der Einträge und gleiche Sortierung vorweisen, können wir mit dem erhaltenen index den richtigen Eintrag der Playlist auslesen. } PlayFile(i); break; end; |
Re: EStringListError aufgetreten (delphi7)
Oben steht doch
Zitat:
|
Re: EStringListError aufgetreten (delphi7)
:? joa ist jetzt nicht viel passiert
Delphi-Quellcode:
da stopt er dan wieder :?
PlayFile(CurrentSong);
[b]Listbox1.Selected[currentSong] := true; // das aktuelle lied selektieren[/b] end; |
Re: EStringListError aufgetreten (delphi7)
Zeig mal etwas mehr Code
|
Re: EStringListError aufgetreten (delphi7)
Delphi-Quellcode:
unit test_u;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, MPlayer, ShellApi, mmsystem; type TForm1 = class(TForm) MediaPlayer1: TMediaPlayer; Button1: TButton; ListBox1: TListBox; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure ListBox1Click(Sender: TObject); procedure MediaPlayer1Notify(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } Procedure AddToPlayList(s:string); procedure PlayFile(songNumber: integer); // deklaration von playfile ändern, hier das 1. mal Procedure WMDropFiles (Var aMsg: tMessage); message WM_DROPFILES; end; var Form1: TForm1; playList: TStringList; CurrentSong: integer = -1; // neue globale variable um uns das aktuelle lied zu merken implementation {$R *.dfm} Procedure TForm1.WMDropFiles (Var aMsg: tMessage); Var Idx, Size, FileCount: Integer; Filename: pChar; Begin Inherited; FileCount := DragQueryFile (aMsg.WParam, $FFFFFFFF, nil, 255); For Idx := 0 To FileCount -1 Do Begin Size := DragQueryFile (aMsg.WParam, Idx, nil, 0) + 1; Filename := StrAlloc (Size); If DragQueryFile (aMsg.WParam, Idx, Filename, Size) = 1 Then { nothing } else AddToPlayList (pChar (Filename)); StrDispose (Filename); End; DragFinish (aMsg.WParam); End; Procedure TForm1.AddToPlayList(s:string); begin playList.Add(s); ListBox1.Items.Add(extractfilename(s)); end; procedure TForm1.Button1Click(Sender: TObject); begin mediaplayer1.FileName := 'C:\Users\Dave\Desktop\testut\01 Die, All Right!.wma'; mediaplayer1.Open; mediaplayer1.play; end; procedure TForm1.FormCreate(Sender: TObject); begin DragAcceptFiles (Handle, True); // drag und drop akzeptieren playList := TStringList.Create; end; procedure TForm1.FormDestroy(Sender: TObject); begin playList.Free; end; procedure TForm1.PlayFile(songNumber: integer); // deklaration von playfile ändern, hier das 2. mal begin if fileexists(Playlist.Strings[songNumber]) then begin CurrentSong := songNumber; mediaplayer1.Close; mediaplayer1.FileName := Playlist.Strings[songNumber]; mediaplayer1.Open; mediaplayer1.play; end; end; procedure TForm1.ListBox1Click(Sender: TObject); var i : integer; begin for i := 0 to listbox1.Count do if listbox1.Selected[i] then begin { nun haben wir in i die nummer der selektierten Zeile da Listbox und Playlist eine identische Reihe der Einträge und gleiche Sortierung vorweisen, können wir mit dem erhaltenen index den richtigen Eintrag der Playlist auslesen. } PlayFile(i); break; end; end; procedure TForm1.MediaPlayer1Notify(Sender: TObject); // unser neues Notify-Event begin if mediaplayer1.Position = mediaplayer1.Length then begin // position = gesamtlänge, bedeutet dass das lied beendet wurde Listbox1.Selected[currentSong] := false; // das gerade gespielte lied de-selektieren inc(currentSong); // aktuellen song um eines erhöhen if currentSong < Playlist.Count -1 then { alles passt, songindex im rahmen} else currentsong := 0; {ende der liste erreicht, setze aktuelles lied auf anfang} PlayFile(CurrentSong); Listbox1.Selected[currentSong] := true; // das aktuelle lied selektieren <<<HIER STOPT ES DANN end; end; end. |
Re: EStringListError aufgetreten (delphi7)
Tut mir ja leid, dass ich dich nerve, aber die obere Grenze ist immer noch falsch. Aber irgendwie scheint dir das ja egal zu sein! :wall:
|
Re: EStringListError aufgetreten (delphi7)
ja entschuldigung ....
ich weiß ja nicht wie ich die setzten soll .... :?: weil ich eig. nur ganz einfache sachen programiere. unterste programier stufe, weil wir das jetzt angefangen haben ein bischen zu machen in der Schule, und ich wollte das ja nur was ausprobieren kanst du mir nicht einfach sagen wo ich es falsch programiert habe und wie es dan richtig geht ??? weil sonst würd ich ja nicht fragen :roll: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:58 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