Seite 1 von 1

Erledigt: Zeilenumbrüche in erweiterten Infos

Verfasst: Sa 20. Mai 2006, 12:55
von Elle4u
Hallo zusammen,

ich möchte mich nochmal dem "Problem" der Zeilenumbrüche bei den erweiterten Infos widmen.

Derzeit ist es so, daß ich darauf checke:

Code: Alles auswählen

*pNext != 0x0A
Aber nun bekomme ich manche Sachen nicht so schön umgebrochen wie es JAG inzwischen macht :hello: .



Weiß jemand auf welche Hex-Codes ich alles prüfen muß (evtl. kann ja JAG dazu einen Tipp geben)?

P.S. ImproBox zeigt es auch noch so an wie ich :wink:

Verfasst: So 21. Mai 2006, 09:15
von Elle4u
Kann mir hierzu keiner weiter helfen?

Verfasst: So 21. Mai 2006, 09:30
von Philipswalther
Hallo Elle4u

Schreibe doch mal eine PN an Jag die liest er vielleicht eher.

:thinker: Er hat bestimmt dieses Thema übersehen.

Jag war nehmlich gestern Nachmittag aktiv.

Gruß,
Jens

Verfasst: So 21. Mai 2006, 09:35
von SPACEart
Elle4u hat geschrieben:Kann mir hierzu keiner weiter helfen?
Schon wieder dran am Programmieren?
Auch Frühaufsteher, was?
Dann gibts ja bestimmt schon bald die Beta20, so wie ich Dich kenne :)

Aber noch was anderes:
Ich habe mir gerade mal die Sache mit der Anzeige oben rechts im Filer angeschaut.
Also ich meine, da wo die Dateien (und Verzeichnisse) gezählt werden.

Eine Möglichkeit, mir anzeigen zu lassen, wie viele Dateien in einem Verzeichnis drin sind, wenn ich dessen Ordner nur selektiere, habe ich nicht, oder?
Also ich muss den Ordner auf tatsächlich öffnen, um zu sehen, wie viele Dateien da drin sind, richtig?
Wäre es nicht vielleicht eine Idee, noch eine drotte Anzeige einzublenden, die anzeigt, wie viele Dateien sich in einem Ordner befinden, wenn man diesen selektiert?

Und doch noch was:
Wenn man nun mit der roten Taste ein neues Verzeichn is anlegt, ist da ja als Vor-Eintrag immer "neues Verzeichnis" eingetragen.
Und mann muss dann immer mit dem Curser ganz nach rechts wandern und dann so lange die Löschen-Taste drücken, bis ales wech ist und man eben seinen eigenen Verzeichnisnamen eintragen kann.
Könnte man da nicht vielleicht statt "neues Verzeichnis" etwas kürzeres als Vor-Eintrag hinmachen, z.B. "Neu", oder vielleicht sogar einfach garnichts, so dass man sofort mit seinem eigenen Verzeichnisnamen lostoppen kann?

Und weiter gehts:
Ich hatte ein Verzeichnis mit dem Namen "Dokus / Magazine" angelegt.
Und als ich dann eine Sendung darein verschieben wollte, hat er gemeldet "Datei schon vorhanden" oder so.
Als ich dann den Schrägstrich auch dem Verzeichnisnamen gegen ein "und" getauscht habe, gings.
Ist das vielleicht noch ein kleiner Bug?

So, nun gibs erstmal lecker Frühstück :d rink:
Gruß
Ingo


Nachtrag:
Oh sorry, ich befinde mich ja hier im falschen Thread.
Kann das vielleicht einer von den Moderatoten in den Filler19-Thread verschieben?

Verfasst: So 21. Mai 2006, 09:43
von DeadBeef
Elle4u hat geschrieben:Kann mir hierzu keiner weiter helfen?
Mir fällt auf, daß in JAG's Darstellung die Sternchen durch "." ersetzt wurden. Vielleicht wird das als Zeilenumbruch interpretiert. Ansonsten mach mal einen Dump der erweiterten Infos auf die Platte und schau sie Dir im Hexeditor an. Beziehungsweise könnte man die Strings als Hexcodes auf die serielle Schnittstelle ausgeben.

Verfasst: So 21. Mai 2006, 10:06
von Elle4u
DeadBeef hat geschrieben:Beziehungsweise könnte man die Strings als Hexcodes auf die serielle Schnittstelle ausgeben.
Das hatte ich gestern mal versucht.

Wie kann ich denn einen String (oder ein Zeichen) in Hex umwandeln? :oops:

Verfasst: So 21. Mai 2006, 10:09
von Elle4u
Philipswalther hat geschrieben:Hallo Elle4u

Schreibe doch mal eine PN an Jag die liest er vielleicht eher.
Hab ich gemacht :wink:

Verfasst: So 21. Mai 2006, 11:31
von DeadBeef
Elle4u hat geschrieben:Das hatte ich gestern mal versucht.

Wie kann ich denn einen String (oder ein Zeichen) in Hex umwandeln? :oops:
Versuch's mal damit:

Code: Alles auswählen

 
#include "string.h"
char string[] = "hello world!\r\n";
int length = strlen(string);
int i;
for(i = 0; i < length; i++)
{
  TAP_Print("%02x ", string[i]);
}
 
TAP_Print("\n");

Verfasst: So 21. Mai 2006, 11:39
von Philipswalther
Elle4u hat geschrieben:Hab ich gemacht :wink:
Viel Erfolg :wink:

Gruß,
Jens

Verfasst: So 21. Mai 2006, 12:00
von FireBird
Du musst auch auf 0x8a prüfen.

Verfasst: So 21. Mai 2006, 12:16
von Elle4u
FireBird hat geschrieben:Du musst auch auf 0x8a prüfen.
Hm.

Sobald ich das schreibe:

Code: Alles auswählen

while( *pNext && !isspace(*pNext) && *pNext != 0x8A ) {
meldet der Compiler:

Code: Alles auswählen

warning: comparison is always true due to limited range of data type
Wenn ich wieder 0x0A nehme funktioniert es wieder...

Verfasst: So 21. Mai 2006, 12:22
von FireBird
Ist pNext ein "unsigned char"?

Verfasst: So 21. Mai 2006, 12:47
von Elle4u

Code: Alles auswählen

	char *pNext = NULL;
Was das alle sso bedeutet verstehe ich nicht immer. :oops:
Diese Funktion z.B. ist von DeJe. :wink:

Verfasst: So 21. Mai 2006, 12:49
von Elle4u
Hier mal komplett:

Code: Alles auswählen

void FileInfo_Init(void) {
	TYPE_File *openedFile;
	word extdescLength;
	int dwSize;
	char *pStart = NULL;
	char *pEnd = NULL;
	char *pNext = NULL;
	char InfoBuffer[10000];
	char cTemp;

	if (FileInfoShow == FALSE) {
		FileInfoShow = TRUE;
		if (!FileInfoTempRgn) {
			FileInfoTempRgn = TAP_Osd_Create(0, 0, FileInfo_W, FileInfo_H, 0, OSD_Flag_MemRgn);
		}
	}

	//Texte aufbereiten und einblenden
	memset( InfoBuffer, 0, sizeof(InfoBuffer) );

	openedFile = TAP_Hdd_Fopen(ItemList[ItemSelected[TempMode] - 1].File.name);
	switch(FilerMode)	{
		case Show_FileInfo_Info:
			TAP_Hdd_Fseek(openedFile, 362 + HeaderOffset, SEEK_SET);
			TAP_Hdd_Fread(&extdescLength, sizeof(extdescLength), 1, openedFile);
			extdescLength = min( extdescLength, 10000 );
			TAP_Hdd_Fseek(openedFile, 368 + HeaderOffset, SEEK_SET);
			TAP_Hdd_Fread(&InfoBuffer[1], extdescLength, 1, openedFile);
			break;
		case Show_FileInfo_Text:
			TAP_Hdd_Fread(&InfoBuffer[1], sizeof(InfoBuffer), 1, openedFile);
			break;
	}
	TAP_Hdd_Fclose(openedFile);

	pEnd = &InfoBuffer[10000];
	pStart = &InfoBuffer[1];
	while( *pStart && pStart < pEnd ){
		pNext = pStart;
		do{
			while( *pNext && !isspace(*pNext) && *pNext != 0x0A ) {
				pNext++;
			}
			cTemp = *pNext;
			*pNext = 0;
			if (!options.ExtInfoFontSize) {
				dwSize = TAP_Osd_GetW(pStart, 0, FNT_Size_1622); 
			} else {
				dwSize = TAP_Osd_GetW(pStart, 0, FNT_Size_1926); 
			}
			*pNext = cTemp;
			if( dwSize > (FileInfo_W-40) ) {
				pNext--;
				while( *pNext && !isspace(*pNext) ) {
					pNext--;
				}
				break;
			}
			if( dwSize == (FileInfo_W-40) ) {
				break;
			}
			if( *pNext == 0x0A || !*pNext ) {
				break;
			}
			pNext++;
		} while( TRUE );

		*pNext = 0;
		// insert a new text line to our list at the end
		if( !lInsert( pStart, strlen(pStart)+1, &pInfoList, PosLast ) ) {
			// Panik!
			FileInfo_Hide();
			FileInfo_Delete();
			return;
		}
		pStart = pNext+1;
	};
	// we start schowing info from the top
	pInfoTop = pInfoList;
	FileInfo_Show();
}

Verfasst: So 21. Mai 2006, 12:50
von FireBird
Das ist ein Pointer des Typs char. char ist aber Vorzeichenbehaftet und läuft von -128 bis 127. Damit funktioniert der Vergleich mit vorzeichenlosen Bytes größer 127 nicht. Wenn Du aber

Code: Alles auswählen

 unsigned char *pNext = NULL;
nimmst, dann liefert der Pointer Werte von 0 bis 255.

Verfasst: So 21. Mai 2006, 12:57
von Elle4u
FireBird hat geschrieben:Das ist ein Pointer des Typs char. char ist aber Vorzeichenbehaftet und läuft von -128 bis 127. Damit funktioniert der Vergleich mit vorzeichenlosen Bytes größer 127 nicht. Wenn Du aber

Code: Alles auswählen

 unsigned char *pNext = NULL;
nimmst, dann liefert der Pointer Werte von 0 bis 255.
Cool!!!

Das war es :wink:

Du bist mein Held :D

:hello:

Verfasst: So 21. Mai 2006, 17:27
von Sigittarius-E
@ Elle4u:

JAG hat ja seine 2 Textviewer als Open Source in seinem JAG SDK Kit drinnen. Da findest du sicher genug Infos

Verfasst: Mo 22. Mai 2006, 19:40
von Jag
Hi,

PN ist angekommen ;)
ich teste als Zeilenumbrüche auf '\n' (= 0x0a) und 0x8a
DeadBeef hat geschrieben:Mir fällt auf, daß in JAG's Darstellung die Sternchen durch "." ersetzt wurden. Vielleicht wird das als Zeilenumbruch interpretiert.
Die Sternchen werden nur durch "." ersetzt, wenn meine Textkompression aktiviert wird, da ich hier einen eigenen reduzierten Zeichensatz verwende!


Gruß
Jag

Verfasst: Mo 22. Mai 2006, 19:43
von Elle4u
Jag hat geschrieben:Hi,

PN ist angekommen ;)
ich teste als Zeilenumbrüche auf '\n' (= 0x0a) und 0x8a
Ja, danke. Inzwischen funzt es einwandfrei :wink:

Jag hat geschrieben:Die Sternchen werden nur durch "." ersetzt, wenn meine Textkompression aktiviert wird, da ich hier einen eigenen reduzierten Zeichensatz verwende!
Ach so. Danke für die Erklärung :up: