PLXINE-Unit

Zur Vorstellung von Komponenten und Units für Lazarus
pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: PLXINE-Unit

Beitrag von pluto »

Das ist schön!
Und wie weit bist du schon?

Ich habe bisher noch nicht Anfangen. Mache ich vielleicht heute(gleich noch) mal sehen.

Du meinst ein SVN würde sich bei zwei "Entwicklern" lohnen ?
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: PLXINE-Unit

Beitrag von pluto »

Ich habe ebene damit Angefangen und habe mir den Standard Format Befehl angeschaut. Daraus konnte ich folgenden Code ableiten:

Code: Alles auswählen

function myFormat(const Fmt : string; const args : array of const):string;
var
  x:Integer;
begin
  for x:=0 to Length(args)-1 do begin
    case args[x].VType of
      vtAnsiString: begin
        writeln(String(args[x].VAnsiString));
      end;
 
      vtInteger: begin
        writeln(args[x].VInteger);
      end;
    end; // case
  end; // for x
end; // myFormat
 
{ TForm1 }
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  writeln(myFormat('Test:',['halöäülo',333]));
 //
end;

Interessant ist das der Array keinen Datentyp hat. Die Funktion ist nur ein Prototyp, noch ist mein Ziel nicht erreicht.
MFG
Michael Springwald

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: PLXINE-Unit

Beitrag von Teekeks »

doch doch, das hat einen Datentyp, und zwar TVarRec.
Ich hatte mich auch schon mit der Format-funktion auseinandergesetzt... :)

[EDIT]
Achso!
Ich habe noch mal was dazu gebastelt.
Eine Property die einem sagt ob momentan was abgespielt wird.
Das brauchte ich gerade sehr dringend bei meinem Player... :)
Dateianhänge
plxine.pas
(14.02 KiB) 89-mal heruntergeladen

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: PLXINE-Unit

Beitrag von pluto »

So hier ist ein Beispiel wie ich es mir vorgestellt habe:

Code: Alles auswählen

function myFormat(const Fmt : string; const args : array of const):string;
var
  x,c,p1,p2,i:Integer;
  ch:Char;
  str1, str2, str3:String;
begin
  c:=Length(args)-1; p1:=Pos('%',fmt); x:=p1+1; i:=0;
  str1:=Copy(Fmt, 1, p1-1); str2:=str1;
 
  while i <= c do begin
    ch:=Fmt[x];
    case ch of
      'V': begin
        str2:=str2+String(args[i].VAnsiString);
        inc(i);
      end;
 
      'N': begin
        str2:=str2+String(args[i].VAnsiString);
        inc(i);
      end;
 
      'A': begin
        str2:=str2+IntTostr(args[i].VInteger);
        inc(i);
      end;
    end; // case
 //     inc(i);
     p2:=PosEx('%',FMT, x)+1;
     str1:=Copy(Fmt, x+1, abs(p2-x)-2);
     x:=p2;
     str2:=str2+str1;
  end; // while x
  result:=str2;
end; // myFormat
 
{ TForm1 }
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  writeln(myFormat('Mein Vornamename ist %V, Mein Nachname ist: %N, Ich bin %A Jahre alt ',[Edit2.Text, Edit3.Text, SpinEdit1.Value]));
end;

Rate mal wie die Ausgabe aussieht: Mein Vornamename ist Michael, Mein Nachname ist: Springwald, Ich bin 24 Jahre alt
Es sieht so aus, als ob das Beispiel Klappt. Das könnten wir jetzt in meiner plXINE Klasse natürlich einbauen. Was hältst du davon ? Ich bin erstaunt darüber wie "einfach" das ging. Ich hoffe du weiß jetzt wie ich es gemeint habe.

Edit01:
Eine Property die einem sagt ob momentan was abgespielt wird.

Das sollte es "eigentlich" schon geben... Status oder so ähnlich. Das sagt ob gerade gespielt wird, oder pausiert ist.
MFG
Michael Springwald

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: PLXINE-Unit

Beitrag von Teekeks »

Das ist schön dass das so einfach ging.
Und, ja, nun versteh ich endlich was du wolltest :D

pluto hat geschrieben:Das sollte es "eigentlich" schon geben... Status oder so ähnlich. Das sagt ob gerade gespielt wird, oder pausiert ist.


Ja, Status gibt es, aber das funktioniert irgendwie nicht richtig.
Also ich kriege nicht immer die richtigen Werte zurück...

So, dann baue mal ein, ich bastle derweil an meinem Player weiter (wird immer umfangreicher, vl. stell ich den hier doch auch noch einmal rein :) )

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: PLXINE-Unit

Beitrag von pluto »

Ich habe diese Funktion hier eben Vorgestellt: http://www.delphipraxis.net/viewtopic.p ... 26#1142126
Es gibt noch einige Vorschläge dort, neben der "Kritik".
MFG
Michael Springwald

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: PLXINE-Unit

Beitrag von Teekeks »

Hab ich schon gesehen :)
Naja, man kann nicht alles haben, aber es wird trotz alledem eine Bereicherung für diese Unit.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: PLXINE-Unit

Beitrag von pluto »

Ja, dass denke ich auch. Z.B. in einem Eigenschaft Dialog könnte diese Funktion Verwendung finden, oder wenn es darum geht ein Bestimmten Dateinamen in einem bestimmten Anzeige Format da zu stellen z.b. ohne Erweiterung ? oder vielleicht doch mit ? Das könnte dann der Anwender entscheiden und nicht der Programmierer.
MFG
Michael Springwald

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: PLXINE-Unit

Beitrag von Teekeks »

Ja, aber wir sollten uns glaube ich nicht zu sehr auf diese Funktion festfahren.
Es wäre auch schön wenn wir das mit dem Video noch hin bekommen könnten.
Könntest du mir mal deine bisherigen Versuche schicken? Dann würde ich da weiter Forschen...

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: PLXINE-Unit

Beitrag von pluto »

Ich versuche ein Paket mit meiner Letzten Aktuellen Test Projekt zusammen zu stellen. Ein Test wollte ich noch machen: Vielleicht liegt es auch daran das ich vom ersten Bild Anfangen. Der Play Funktion von XINE kann man als Parameter die Position übergeben.
MFG
Michael Springwald

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: PLXINE-Unit

Beitrag von Teekeks »

Das wäre schön. Dann muss man nicht alles extra nochmal sich zusammenbasteln :)

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: PLXINE-Unit

Beitrag von pluto »

Wie versprochen hier die Beispiel Anwendung mit hoffentlich allen notwendigen Units.

Du musst in "procedure TMyThread.test" den Datei Namen anpassen. Der Thread war ein kleiner Test. Bei mir kommt nur bei einem Video diese Fehler Meldung:
[FORMS.PP] ExceptionOccurred
Sender=EInvalidOp
Exception=Invalid floating point operation
Stack trace:
$B5EB167F
TApplication.HandleException Invalid floating point operation
Stack trace:
$B5EB167F

(project1:19839): Gtk-CRITICAL **: gtk_style_detach: assertion `style->attach_count > 0' failed
[FORMS.PP] ExceptionOccurred
[FORMS.PP] ExceptionOccurred
[FORMS.PP] ExceptionOccurred
/home/Michael/lazarus-0.9.27.src/lazarusc//tools/runwait.sh: line 17: 19839 Speicherzugriffsfehler $CommandLine
--------------------------------------------------
Press enter

Viel Glück...
Dateianhänge
plxine.zip
(143.02 KiB) 84-mal heruntergeladen
MFG
Michael Springwald

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: PLXINE-Unit

Beitrag von Teekeks »

So.
Das erste Problem ist schon behoben (das mit der AV).
Du musst auch schon noch abfangen ob bei XOpenDisplay auch was <>nil zurückkommt.
Warum weiß ich nicht, aber du musst den das am Anfang des Inits in eine variable schreiben und dann später zuweisen...
Jetzt hängst aber noch an einer anderen stelle.
Ich bin aber zuversichtlich.
das erste Frame bekomme ich schon angezeigt...

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: PLXINE-Unit

Beitrag von pluto »

Ich bin aber zuversichtlich.
das erste Frame bekomme ich schon angezeigt...

Ja, soweit war ich auch schon. Bei sehr vielen Dateien klappt es schon, aber es gibt Dateien wo es eine Fehler Meldung kommt. Vielleicht bekommen wir auch die DVD und TV Funktion von XINE zum laufen. Wäre einfach "Traumhaft".
MFG
Michael Springwald

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: PLXINE-Unit

Beitrag von Teekeks »

So. Nun läuft es bei mir mit allen Dateien die ich habe...

ps.: deins konnte garnicht funktionieren wegen dem da:

Code: Alles auswählen

procedure TMyThread.test;
begin
//...
    xine.Open('/home/peter/Videos/Beverly_Hills_Cop_avi.flv');
end;
 
//...
  repeat
    Synchronize(@Test);
  until (Terminated) or (Suspended);
  Suspend;
end;

Da startest du das Video immer wieder neu :)
Dateianhänge
plxine_1.zip
(503.89 KiB) 90-mal heruntergeladen

Antworten