Suche dringend Hilfe bei Problem mit Radiobuttons und mpeg-Wiedergabe
-
Hi...
Also ich hab im Header nachgesschaut und da stand tatsächlich no was drin... Hab ich rausgelöscht und jetz gehts.
Wenn ich des richtig verstanden hab, dann müsst ich doch mit der Media Player Komponente die mpeg Datei wiedergeben können, oder?
Ich hab die Komponente eingefügt und bei FileName eine mpeg datei zum Test angegeben. Wenn ich nun das Projekt baue, dann sind die Buttons Play, Pause und Stop deaktiviert (die anderen sind gar nicht sichtbar aber das ist so beabsichtigt), obwohl bei allen drei EnabledButtons auf true steht. woran liegt das?
-
Hallo
nach dem zuweisen des Dateinamens must du noch entweder die Methode Open() ausführen oder du setzt generel die EIgenschaft AutoOpen auf true
bis bald
akari
-
Komisch... Ich hatte die Eigenschaft scho auf AutoOpen() und dann hab ich beim kompilieren ne Fehlermeldung bekommen. Allerdings hatte ich da bei der Eigenschaft DeviceType auch dtDigitalVideo und jetz hab ich das auf dtAutoSelect und jetz gehts...
Ich hab mir nun folgendes vorgestellt:
Ich nehme einfach zwei Variablen, die je nach dem welcher RadioButton der RadioGoups aktiviert ist, den Wert 1, 2 oder 3 annehmen. Durch einen Button, auf dem z.B. "Simulationsdaten auswerten" steht werden diese Variablen dann ausgewertet und dann für die Eigenschaft FileName des MediaPlayers das entsprechende Video gesetzt. Nur... Wie mach ich das?
Ich bin mir ziemlich sicher, dass es da auch elegantere Lösungen ohne Hilfe eines extra Buttons gibt, aber ich weiss natürlich net wie
Gibts eigentlich dann auch ne Möglichkeit den Pfad des Videos relativ zum Pfad der ausführbaren Datei anzugeben?Danke Danke Danke schon mal soweit
Simon
-
Hallo
nimm den Event TGroupBox::OnClick um sofort auf Änderungen an den Optionen zu reagieren.
Realtive Dateipfade schreibst du mit "Subpath\\File"
bis bald
akari
-
Okay, das mit dem TGroupBox::OnClick werd ich versuchen.
Ich hab mich in der Zwischenzeit mal darüber gemacht, das mit dem Button zu versuchen,was ich vorher erwähnt hab.
Ich hab das mit ner wahnwitzigen Verschachtelung ifs und elses versucht und rausgekommen is dabei folgendes:void __fastcall TForm1::Button1Click(TObject *Sender) { if (RadioGroup1->ItemIndex = 0) { if (RadioGroup2->ItemIndex = 0) { MediaPlayer1->FileName = C:/test/sheep.mpeg; }; else { if (RadioGroup2->ItemIndex = 1) { MediaPlayer1->FileName = C:/test/sheep.mpeg; }; else { MediaPlayer1->FileName = C:/test/sheep.mpeg; }; }; }; else { if (RadioGroup1->ItemIndex = 1) { if (RadioGroup2->ItemIndex = 0) { MediaPlayer1->FileName = C:/test/hotdog.mpeg; }; else { if (RadioGroup2->ItemIndex = 1) { MediaPlayer1->FileName = C:/test/hotdog.mpeg; }; else { MediaPlayer1->FileName = C:/test/hotdog.mpeg; }; }; }; else { if (RadioGroup2->ItemIndex = 0) { MediaPlayer1->FileName = C:/test/roughkick.mpeg; }; else { if (RadioGroup2->ItemIndex = 1) { MediaPlayer1->FileName = C:/test/roughkick.mpeg; }; else { MediaPlayer1->FileName = C:/test/roughkick.mpeg; }; }; }; };Allerdings bekomm ich ne Fehlermeldung beim bauen, welche is glaube ich darauf beruht, dass ich die Eigenschaften von den RadioGruops falsch abfrage... Kann das sein? Oder liegt der Hund wo anders begraben ?

Ach ja, die Filenames sind natürlich nicht die endgültigen, sondern nur einstweilen zum testen...
Wenn das funktioniert, dann kann ich doch das auch für den Event TGroupBox::OnClick verwenden, oder?
-
Hallo
du must Zeichenketten im Quellcode in Doppelte Anführungszeichen schreiben
MediaPlayer1->FileName = "C:/test/sheep.mpeg";Desweiteren solltest du lieber die einzelne Dateipfade in ein AnsiString-Array packen, und dieses mit den Index aus der GroupBox auslesen.
bis bald
akari
-
akari schrieb:
Hallo
du must Zeichenketten im Quellcode in Doppelte Anführungszeichen schreiben
MediaPlayer1->FileName = "C:/test/sheep.mpeg";Das ist auch noch grob falsch, so muss das aussehen:
MediaPlayer1->FileName = "C:\\test\\sheep.mpeg";
-
Hallo
Probier es doch mal aus. Seit Win2000 (?) akzeptiert Windows auch den Slash als Pfad-Trennzeichen.
bis bald
akari
-
Also ich hab die Zeichenketten jetz in doppelte Anführungszeichen gesetzt (ich kann mich da noch grob dran erinnern, dass ich das schonmal gelernt hab :)) aber ich bekomm trotzdem beim kompilieren noch folgende Fehlermeldung:
[C++ Fehler] Unit1.cpp(27): E2492 Zuweisung von Eigenschaften nur mit einfachen Anweisungen wie \\\042prop = value;\\\042
Woran liegt das? Ich bin völlig ratlos...
Ach ja und das mit demRealtive Dateipfade schreibst du mit "Subpath\\File"
hab ich irgendwie net so ganz kapiert...
-
Hallo
- wenn du eine Compiler-Fehlermeldung postet, immer auch die aktuelle Zeile posten die das betrifft, am besten auch noch alle relevanten drumherum
- Dasif (RadioGroup1->ItemIndex = 1)ist keine Überprüfung, sondern eine zuwesiung.
- lösch diese ganze Behandlung und schreib das so wie ich es dir mit dem Array erklärt habe, dann sind es nur noch 3 Zeilen oder so.bis bald
akari
-
Leider kann ich die Pfadnamen nicht in ein AnsiString-Array schreiben, weil ich nicht genau weiss, was ein Array ist (ich mach mich spätestens vllt jetz lächerlich, aber Arrays waren im C++ Kurs (Volkards C++ Kurs) no net dran...).
Wie schreib ich das denn, dass aus meinen Zuweisungen eine Überprüfung wird? Ich will ja von dem ItemIndex der RadioGroups nur wissen ob er auf 0, 1, oder 2 steht... und entsprechend sollen dann die Pfadnamen des MediaPlayers geändert werden.
Simon
-
Hallo
ich geb dir einen gut gemeinten Rat : mach erstmal das Tutorial über die C++ Grundlagen fertig und schreibe einfache Konsolenprogramme. Du erwartest doch nicht ernsthaft das du ohne Wissen von Überprüfungen und Arrays in einer OOP-GUI weit kommst?
bis bald
akari
-
Normalerweise würd ich das ja auch...
aber das Problem is nur, dass ich dieses kleine Programm unbedingt für meine Facharbeit brauch.
Ich hatte ja ein Jahr zeit um diese fertigzustellen, aber die Faulheit hat gesiegt... Ob dus glaubst oder nicht, aber dafür könnt ich mich heute selber schlagen und treten.
Ich verspreche dir hoch und heilig dass ich, bevor ich weiter mit C++ Builder etc. Programme schreibe, sauber meine C++ Kurse zu ende bring und einfache Konsolenprogs mach... Diese Tortur war mir bis hierhin schon eine gehörige Lehre...
Allerdings muss meine Facharbeit bis Freitag fertig sein (sonst wars das mitm Abi). Dass das was ich mir eingebrockt hab, ziemlich scheisse war, seh ich ein. Aber im Moment hab ich das Gefühl, dass du meine einzige Rettung bist... Ich hoff, dass du mir trotzdem noch weiter hilfst...Wenn ich den ItemIndex der RadioGruops überprüfen kann, müsste das Prog doch eigentlich laufen...
-
Hallo
Also hier eine Umsetzung deines letzen Posts
AnsiString Files[3] = {"C:/test/sheep.mpeg", "C:/test/hotdog.mpeg", "C:/test/roughkick.mpeg"}; // Array deklarieren ... void __fastcall TForm1::Button1Click(TObject *Sender) { MediaPlayer1->FileName = Files[RadioGroup1->ItemIndex]; }Dies entspricht logisch deinem Ausschnitt, ob es nun aber auchd as ist was du im sinn hast weiß ich nicht genau.
bis bald
akari
-
Okay... Ich hab n bisschen gelesen und das mit den Arrays glaub ich einigermassen begriffen. Aber wenn ich das so schreib wie du eben vorgeschlagen hast, dann berücksichtige ich ja nur eine der beiden RadioGroups. Das abzuspielende Video ergibt sich allerdings aus beiden Radiogroups...
Ich bin allerdings im Moment auch total übermüdet und muss mich jetzt erstmal hinlegen. Ich mach morgen weiter und werd dann meine (Miss-)Erfolge weiter posten.
Ich kann dir gar net sagen, wie dankbar ich dir bin, dass du mir bis hier hin schon mal geholfen hast... Ich hoff, du bist morgen auch noch da
Gutn8
Simon
-
Hallo
Klar gibt es in meinem Beispiel nur die Überprüfung einer Option.
Ich hab dir doch gesagt, das ich dein Ausschnitt nachgebaut habe, und da gibt es ja auch gerade mal 3 Dateipfade, deren Auwwahl ausschließlich von RadioGroup1 abhängt. Wenn du mal genau beschreibst, welche Optionen in Zusammenhang welchen Dateipfad ergeben sollen, können wir auch deine Auswahl fertigbekommen.bis bald
akari
-
Also... Ich hab zwei RadioGoups mit folgenden Optionen:
Radio Group1:
-Motivation hoch
-Motivation mittel
-Motivation geringRadio Group2:
-Schlüsselreiz hoch
-Schlüsselreiz mittel
-Schlüsselreiz geringWelche Kombinationen dann welche Datei aufrufen sollen sieht wie folgt aus:
Motivation hoch + Schlüsselreiz hoch -> MOhochSRhoch.mpeg
Motivation hoch + Schlüsselreiz mittel -> MOhochSRmittel.mpeg
Motivation hoch + Schlüsselreiz gering -> MOhochSRgering.mpeg
Motivation mittel + Schlüsselreiz hoch -> MOmittelSRhoch.mpeg
Motivation mittel + Schlüsselreiz mittel -> MOmittelSRmittel.mpeg
Motivation mittel + Schlüsselreiz gering -> MOmittelSRgering.mpeg
Motivation gering + Schlüsselreiz hoch -> MOgeringSRhoch.mpeg
Motivation gering + Schlüsselreiz mittel -> MOgeringSRmittel.mpeg
Motivation gering + Schlüsselreiz gering -> MOgeringSRgering.mpegIch hoff, dass das einigermassen verständlich is. Ich weiss nämlich net, wie ich das anders erklären soll.
-
Hallo
dann ist es doch ganz einfach :
AnsiString Attrib[3] = {"hoch", "mittel", "gering"}; ... void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString FileName; FileName += "MO" + Attrib[RadioGroup1->ItemIndex]; FileName += "SR" + Attrib[RadioGroup2->ItemIndex]; FileName += ".mpeg"; MediaPlayer1->FileName = FileName; }Btw : du solltest deinen Controls sinnvolle Name geben.
-
Don't use globals ...
-
Muss man alles selber machen ?

void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString Attrib[3] = {"hoch", "mittel", "gering"}; AnsiString FileName; FileName = "MO" + Attrib[RadioGroup1->ItemIndex]; FileName += "SR" + Attrib[RadioGroup2->ItemIndex]; FileName += ".mpeg"; MediaPlayer1->FileName = FileName; }