Seite 1 von 2
Erledigt: Erweiterte Information des laufenden Events ermitteln
Verfasst: So 9. Jul 2006, 17:24
von Elle4u
Hallo zusammen,
ich verzweifel gerade mal wieder mit diesen Zeigern und so weiter
Code: Alles auswählen
TYPE_TapEvent *Event = NULL;
Event = TAP_GetCurrentEvent(RecInfo.svcType, RecInfo.svcNum);
//TAP_Print( "%s\n", TAP_EPG_GetExtInfo(Event) );
&InfoBuffer[1] = TAP_EPG_GetExtInfo(Event);
Das TAP_Print gibt mit den Text aus aber die Zuweisung in InfoBuffer (da speicher ich die erweiterten Infos) funktioniert einfach nicht. Egal wie und wo ich die (& oder *) setzte...
Kann mir BITTE jemand helfen

.
Verfasst: So 9. Jul 2006, 17:44
von t3xi
Hi Elle4u,
man sieht leider nicht was dieser InfoBuffer[1] ist, aber probier mal folgendes:
byte *extInfo;
extInfo = TAP_EPG_GetExtInfo(Event);
... usw ...
TAP_MemFree(extInfo);
Verfasst: So 9. Jul 2006, 17:52
von FireBird
Ich nehme an, dass Du die Extended Info wegkopieren möchtest. Deshalb ist auch strcpy zu verwenden:
Code: Alles auswählen
char InfoBuffer [4096];
byte *pExtInfo;
Event = TAP_GetCurrentEvent(RecInfo.svcType, RecInfo.svcNum);
pExtInfo = TAP_EPG_GetExtInfo(Event);
strcpy (InfoBuffer, pExtInfo);
TAP_MemFree (pExtInfo);
TAP_Print ("%s\n", InfoBuffer);
Nicht auf das TAP_MemFree vergessen, sonst gibt es Memory-Leak.
Verfasst: So 9. Jul 2006, 17:54
von Elle4u
t3xi hat geschrieben:Hi Elle4u,
man sieht leider nicht was dieser InfoBuffer[1] ist
Oh. Sorry.
InfoBuffer ist ein Char:
Und das muß auch so bleiben, da die anderen Dinge bereits darauf aufbauen...
Ansonsten lese ich es aus dem Header mit:
Code: Alles auswählen
TAP_Hdd_Fseek(openedFile, 368 + TempHeaderOffset, SEEK_SET);
TAP_Hdd_Fread(&InfoBuffer[1], extdescLength, 1, openedFile);
Aber bei einer laufenden Aufnahme möchte ich es aus dem akt. Event holen...
Aber das geht auch nicht?
Fehlermeldung:
Verfasst: So 9. Jul 2006, 17:56
von Elle4u
FireBird hat geschrieben:Ich nehme an, dass Du die Extended Info wegkopieren möchtest. Deshalb ist auch strcpy zu verwenden:
Danke.
Ich werde das mal versuchen...
Verfasst: So 9. Jul 2006, 18:01
von Elle4u
Elle4u hat geschrieben:Danke.
Ich werde das mal versuchen...
Cool.
Das geht.
Mann das hat mich jetzt Stunden gekostet

ops:
Verfasst: So 9. Jul 2006, 18:31
von Elle4u
So funzt es nun:
Code: Alles auswählen
TYPE_TapEvent *Event = NULL;
byte *pExtInfo;
Event = TAP_GetCurrentEvent(RecInfo.svcType, RecInfo.svcNum);
pExtInfo = TAP_EPG_GetExtInfo(Event);
strcpy (&InfoBuffer[1], pExtInfo);
TAP_MemFree (pExtInfo);
Verfasst: So 9. Jul 2006, 18:37
von t3xi
Und wieso bleibt das erste Byte im InfoBuffer ungenutzt?

Verfasst: So 9. Jul 2006, 18:39
von FireBird
Elle4u hat geschrieben:Code: Alles auswählen
strcpy (&InfoBuffer[[b][color=Red]1[/color][/b]], pExtInfo);
Warum beginnst Du beim 2. Element?
Verfasst: So 9. Jul 2006, 18:39
von Happy
Elle4u hat geschrieben:So funzt es nun:
Hi,
hier wird die erw. Info aber ab dem 2. Byte von Infobuffer eingefügt, nicht an den Anfang. Ist das so gewollt ?
Normalerweise würde man das Kopieren so machen:
Verfasst: So 9. Jul 2006, 18:41
von FireBird
Happy hat geschrieben:hier wird die erw. Info aber ab dem 2. Byte von Infobuffer eingefügt, nicht an den Anfang.
Dritter

Verfasst: So 9. Jul 2006, 18:42
von t3xi
Erster

Verfasst: So 9. Jul 2006, 18:45
von Happy
Verfasst: So 9. Jul 2006, 18:46
von Elle4u
Das hat DeJe damals so gemacht.
Warum auch immer...
Wenn ich aber nur kopiere, dann fehlt nachher das 1. Zeichen in der Ausgabe.
Habe jetzt noch ein Problem.
Wenn eine Info leer ist, dann friert der Topf hier ein:
Kann ich das noch irgendwie abfangen?
Verfasst: So 9. Jul 2006, 18:49
von FireBird
if (pExtInfo != NULL)
Das zum Thema: die Entwickler reden nicht miteinander.
Verfasst: So 9. Jul 2006, 18:54
von Elle4u
FireBird hat geschrieben:Das zum Thema: die Entwickler reden nicht miteinander.
OK. Danke.
Und entschuldigt meine für Euch sicherlich manchmal doof erscheinenden Nachfragen

ops:
Kann mir vorstellen, daß Euch da manchmal die Haare zu Berge stehen.
So wie mir, wenn ein Laie vom PC spricht

Verfasst: So 9. Jul 2006, 19:00
von Homer
Man darf natürlich nur so viele Bytes von pExtInfo kopieren, wie man bei "TAP_EPG_GetExtInfo(Event)" erhalten hat.
Viele Grüße
Homer
Verfasst: So 9. Jul 2006, 19:09
von Elle4u
Homer hat geschrieben:Man darf natürlich nur so viele Bytes von pExtInfo kopieren, wie man bei "TAP_EPG_GetExtInfo(Event)" erhalten hat.
Aber da erhält man ja nur einen Pointer...
Klappt aber ja jetzt wunderbar

Verfasst: Mo 10. Jul 2006, 11:51
von Harvey
Code: Alles auswählen
strcpyn (&InfoBuffer[1], pExtInfo, 9999);
InfoBuffer[9999]=0;
Das verhindert einen Überlauf, falls die erweiterte Info mehr als 10000 Zeichen hat.
Verfasst: Mo 10. Jul 2006, 15:49
von Gerti
Hi!
Ich muß gestehen, alles verstanden zu haben, was hier geschrieben wurde...ich bin platt :-)
Gruß,
Gerti