Seite 1 von 2

Tap Programmierung > Abfrage des aktuellen Play Dateinamen

Verfasst: Di 11. Feb 2014, 08:48
von omue
Hallo,

wie bekomme ich den Dateinamen, wenn ich gerade etwas abspiele ?

Über "TAP_Hdd_GetPlayInfo > TYPE_TapEvent > eventName" bekomme ich die Infos aus der aktuellen Play Datei.
Aber wie frage ich den Filenamen ab ?

ich finde nix :confused:

Olaf

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

Verfasst: Di 11. Feb 2014, 09:01
von FireBird
Die Antwort versteckt sich im file-Parameter.

Code: Alles auswählen

typedef struct 
{
    dword   info;
    dword   time;   // mjd << 16 | h << 8 | m
    long64  size;
    char    name[ MAX_FILE_NAME_SIZE + 1];
    void*   handle;
} TYPE_File;

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

Verfasst: Di 11. Feb 2014, 09:25
von omue
Da muß man erst drauf kommen :D

Vielen Dank !

jetzt klappts :)

Olaf

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

Verfasst: Mo 17. Feb 2014, 19:20
von omue
Die Abfrage von "name" klappt ja dank FireBird.

TYPE_PlayInfo isPlay;

sprintf( Estr, "%s", isPlay.file->name);
TAP_Osd_PutString1622( rgn, 120, yMenu -90, 710 , Estr, RGB( 200, 200, 240), COLOR_Black );


Nun habe ich versucht "size" abzufragen:


sprintf( Estr, "%d", isPlay.file->size);
TAP_Osd_PutString1622( rgn, 120, yMenu -90, 710 , Estr, RGB( 200, 200, 240), COLOR_Black );



Da bekomme ich falsche Werte.
Egal was gerade läuft, der Wert ist gleich. :confused:

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

Verfasst: Mo 17. Feb 2014, 19:27
von FireBird

Code: Alles auswählen

typedef struct 
{
    dword   info;
    dword   time;   // mjd << 16 | h << 8 | m
    long64  size;
    char    name[ MAX_FILE_NAME_SIZE + 1];
    void*   handle;
} TYPE_File;
size ist ein 64-Bit Integer, %d aber ein 32-Bit Formatzeichen. Damit von sprintf() alle 64 Bit ausgewertet werden, musst Du %lld (2x Lima, nicht India) verwenden.

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

Verfasst: Mo 17. Feb 2014, 20:05
von omue
Danke für Deine schnelle Antwort !

Sorry ich hatte das falsch gepostet.
Auch wenn ich die 64bit Int erst durch 1048576 teile um MB herauszubekommen komm Mist raus.

Deinen Vorschlag hatte ich auch schon probiert.

wenn ich:
sprintf( str, "%lld", isPlay.file->size);
TAP_Osd_PutString1419( rgn, 110, 10, 310 , str, RGB( 200, 200, 240), COLOR_Black);


benutze, kommt auch der gleiche Wert egal welches File gerade abgespielt wird. :confused:

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

Verfasst: Mo 17. Feb 2014, 20:15
von Twilight
versuch es mal mit tap_sprint, anstatt sprintf :thinker:

twilight

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

Verfasst: Mo 17. Feb 2014, 20:19
von FireBird
omue hat geschrieben:Auch wenn ich die 64bit Int erst durch 1048576 teile um MB herauszubekommen komm Mist raus.

Das Ergebnis ist trotzdem 64 Bit und somit nicht mit dem 32-Bit-Formatzeichen kompatibel.
sprintf( str, "%lld", isPlay.file->size);
TAP_Osd_PutString1419( rgn, 110, 10, 310 , str, RGB( 200, 200, 240), COLOR_Black);
Da würde ich schon erwarten, dass das funktioniert.

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

Verfasst: Mo 17. Feb 2014, 20:29
von FireBird
Ich habe es gerade ausprobiert und das Problem ist, dass das File-Struct nicht auf die .rec, sondern auf die .inf zeigt und somit erhältst Du auch die Größe der inf.

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

Verfasst: Mo 17. Feb 2014, 20:34
von omue
[quote="FireBird"]Ich habe es gerade ausprobiert und das Problem ist, dass das File-Struct nicht auf die .rec, sondern auf die .inf zeigt und somit erhältst Du auch die Größe der inf.[/quote]

ok, dann ist es klar, warum das nicht geht.
Dann muß ich es wohl anders machen.

Danke für alle Antworten !


Olaf

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

Verfasst: Mo 17. Feb 2014, 20:46
von FireBird
Ich kann Dir aus ein paar FBLib-Funktionen eine Möglichkeit basteln, wie Du trotzdem an die Größe der Rec kommst. Hängt halt davon ab, was Du im Endeffekt erreichen möchtest.

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

Verfasst: Mo 17. Feb 2014, 20:57
von omue
FireBird hat geschrieben:Ich kann Dir aus ein paar FBLib-Funktionen eine Möglichkeit basteln, wie Du trotzdem an die Größe der Rec kommst. Hängt halt davon ab, was Du im Endeffekt erreichen möchtest.


Ich bastele gerade an einer Infobox die nicht nur die Programminfos anzeigt, sondern beim Abspielen auch die Fileinfos.
Das geht schon:
-Programminfos jetzt/next mit Zeiten und Fortschrittsbalken.
- Zusatzinfos >Verschlüsselt usw
- Playinfos mit Zeiten und Fortschrittsbalken ( auch bei Timeshift ) Wenn keine Playevents da sind nehme ich den Dateinamen zur info.
( Daher auch die erste Frage im Thread)
- Sprungfunktionen 1Min vor 1 Min zurück usw.

Das ganze ist noch sehr Einfach ohne Grafik Design.
Nun hatte ich mir überlegt beim Abspielen noch die Dateigröße mit anzuzeigen und war etwas verzweifelt :D

FBLib wäre gut, aber da lerne ich ja nix :D :
Viel mehr helft Ihr mir, wenn Ihr meine Fragen beantwortet.

Und dafür :hello: :hello: :hello: :hello:

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

Verfasst: Mo 17. Feb 2014, 21:01
von FireBird
Du kannst natürlich auch das .inf vom Dateinamen abschneiden, die daraus gewonnen .rec öffnen und schon hast Du die Größe. Es gibt nur ein Problem: Du kennst das Verzeichnis nicht, aus der die Datei abgespielt wird.

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

Verfasst: Di 18. Feb 2014, 10:28
von omue
FireBird hat geschrieben:Du kannst natürlich auch das .inf vom Dateinamen abschneiden, die daraus gewonnen .rec öffnen und schon hast Du die Größe. Es gibt nur ein Problem: Du kennst das Verzeichnis nicht, aus der die Datei abgespielt wird.


Danke nochmal.

Stimmt :(

Ich lege das erst mal auf Eis.
Jetzt habe ich erst noch mit TAP_EPG_GetExtInfo und der Ausgabe zu tun.
Den Text hab ich schon mal. Nun muss ich den auch irgendwie Anzeigen, Abschnippeln usw.
Die Bildausgabe von mehreren Zeilen muß ich noch kapieren.

Olaf

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

Verfasst: Di 18. Feb 2014, 11:06
von Gerti
Hi!

Das musst Du zu Fuß erledigen.
So lange die einzelnen Wörter hinzufügen, wie diese noch in die aktuelle Zeile passen (die Länge kannst Du ja abfragen) und dann eine neue Zeile erzeugen und so weiter...

Gruß,
Gerti

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

Verfasst: Di 18. Feb 2014, 12:21
von omue
Gerti hat geschrieben:Hi!

Das musst Du zu Fuß erledigen.
So lange die einzelnen Wörter hinzufügen, wie diese noch in die aktuelle Zeile passen (die Länge kannst Du ja abfragen) und dann eine neue Zeile erzeugen und so weiter...

Gruß,
Gerti


Danke für den Tipp.
Mit Strings habe ich mich eigentlich gezankt :D
Aber da muss ich halt mal durch :D :

Olaf

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

Verfasst: Di 18. Feb 2014, 14:11
von Gerti
Hi!

Code: Alles auswählen

int texttolines (char *description) {
  char *ptr;
  char delimiter[] = " ";
  int line = 0;
  int foundlines = 0;
  int addline=0;
  int linelength=0; 
   
  ptr = strtok(description, delimiter);      
  lines[0][0]=0x00;
  
  while (ptr != NULL && line < 220) {
    addline=FM_GetStringWidth( ptr, &Franklin_Gothic_Medium_14_FontData);
  	// naechsten Abschnitt erstellen
   	if (addline+linelength > 485) {
   	  line++;
      TAP_SPrint(lines[line],"%s",ptr);
      linelength=FM_GetStringWidth( lines[line], &Franklin_Gothic_Medium_14_FontData);
    }
    else {
      if (linelength == 0) TAP_SPrint(lines[line],"%s",ptr);
      else TAP_SPrint(lines[line],"%s %s",lines[line],ptr);
      linelength=FM_GetStringWidth( lines[line], &Franklin_Gothic_Medium_14_FontData);
      if (ptr[(strlen(ptr)-1)] == 0x0A){
        line++;
        lines[line][0]=0x00;
        linelength=0;
      }
    }
    ptr = strtok(NULL, delimiter);
  }
  foundlines=line;
  line++;
  while (line < 220) {
    lines[line][0]=0x00;
    line++;
  }
  return foundlines; 
}

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

Verfasst: Di 18. Feb 2014, 15:14
von omue
Danke Gerti !

Du hast mir jetzt sicherlich einige Stunden grübeln erspart.
Ich werde das mal durchgehen und für mich anpassen.


Die Hilfe hier ist 1A !!!


Olaf

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

Verfasst: Di 18. Feb 2014, 15:32
von FireBird
Vorsicht, da werden ein paar pöse FBLib-Funktionen verwendet. :und_weg:

AW: Tap Programmierung > Abfrage des aktuellen Play Dateinamen

Verfasst: Di 18. Feb 2014, 16:29
von Gerti
Hi!

Die kann er aber relativ einfach gegen die API-Funktionen austauschen. Betrifft ja nur FM_GetStringWidth oder habe ich etwas übersehen?

Gruß,
Gerti