Gamestudio Links
Zorro Links
Newest Posts
oldschool fps project
by 3run
56 minutes 42 seconds ago
[ALL STYLES] 2D Videogame Artist (pixel, vector, painted)
by DesixStudios
Today at 14:45
Easy question
by jcl
Today at 13:47
Cheap bouncing shells/gibs
by 3run
Today at 00:36
WED doesnt show all entity actions in the behavior list
by rayp
Yesterday at 22:31
Fullscreen Antialiasing plugin
by Iglarion
Yesterday at 22:29
Date field in dataset functions
by jcl
Yesterday at 10:55
AUM Magazine
Latest Screens
RPG PARTY
Triton Wing now available on Steam
AckCon'17: Lotter vs The World
Triton Wing
Who's Online
13 registered (Hredot, jumpman, 3run, Ch40zzC0d3r, Kartoffel, AndrewAMD, MasterQ32, kujo, FLD, 1 invisible), 462 Guests and 5 Spiders online.
Key: Admin, Global Mod, Mod
Newest Members
cme, pataba, byano, Tuguldur717, jmgrnt7
17833 Registered Users
Topic Options
Rate This Topic
#468205 - 09/24/17 17:10 Fetter ACSII Parser
tagimbul Offline
Member

Registered: 06/04/10
Posts: 195
hey grin
das handbuch lügt ^^ da steht man kann nur maximal 10'000 zeichen aus einer text datei parsen ^^
ich habe nun einen weg gefunden bis zu -> 5 MILLIONEN <- zu parsen ^^
man kann sicher noch mehr wenn man will.
aber zum vergleich:
der dickste harry potter band hat 1,7 miolionen zeichen

der parser ist richtig gut grin

jedoch:
man kann ihn nicht via SED starten man muss das programm puplishen damit es funktioniert.
dann werden die 5 millionen zeichnen in nur wenigen sekunden geparst

und es wird ein array in der grösse von 35'7141 erzeugt
jede zeile hat 14 zeichen + 1 zeilen umbruch
das wären 15 * 35'7141 und sind insgesamt 5'357'115 zeichen die da geparst werden
und dynamsich in arrays abgespeichert werden =)

sehr nett finde ich dass ich den zeilen umbruch als acsii zeichen nutze um zu signalisieren das es sich um einen neuen string handelt.

find ich geil ^^
das lösst mein problem bei meinem dialog system wo ich bisher auf 10'000 chars eingeschränkt war =)

villeicht kann ihn ja jemand brauchen
.rar ist im anhang
lg tom


edit: nutzt die funktion von Master032 als main.c die is ja mal ultra geil ! grin


Edited by tagimbul (09/25/17 14:33)
_________________________
meine website mit 3dgs sachen =) //noch nicht ganz umgebaut ^^"
http://flashbreaker.com/home.html
und mein YT channel mit diversen game entwicklungs videos, vor allem shader zeugs
https://www.youtube.com/user/tagimbul/videos

Top
#468212 - 09/25/17 14:31 Re: Fetter ACSII Parser [Re: tagimbul]
MasterQ32 Online
Expert

Registered: 11/26/07
Posts: 2541
Loc: Germany, BW, Stuttgart
Ich war mal so frei und habe deine Version etwas auf Performance und Speicher optimiert:

Code:
///////////////////////////////
#include <acknex.h>
#include <stdio.h>
#include <default.c>
///////////////////////////////

#define MAX_LEN 1024

function main()
{
	int numberOfStrings = 0;
	
	char buffer[MAX_LEN]; // 1kB pro Zeile, kann auch mehr sein (MAX_LEN ändern)
	FILE * f = fopen("meine_dialoge.txt", "r");
	while(!feof(f))
	{
		// Anzahl der Strings bestimmen durch zeilenweises
		// Einlesen
		if(fgets(buffer, MAX_LEN, f) != NULL) {
			numberOfStrings++;
		} else {
			if(ferror(f)) error("Error in file!");
		}
	}
	
	// char* anstelle von STRING* macht nen ordentlichen Speedup aus
	char ** array = malloc(sizeof(char*) * numberOfStrings);
	if(!array) error("something went wrong!");
	
	// Zurückspulen
	int index = 0;
	fseek(f, SEEK_SET, 0);
	while(!feof(f))
	{
		if(fgets(buffer, MAX_LEN, f) != NULL) {
		
			// Länge des Strings bestimmen
			int len = strlen(buffer);
			
			// Passenden Speicher allokieren
			// +1 für nullterminator
			array[index] = malloc(len + 1);
			
			// und den string kopieren
			strcpy(array[index], buffer);
			
			// RTFM: fgets lässt das 'n' am Ende der Zeile im String,
			// also: ABSCHNEIDEN!
			(array[index])[len] = 0;
			
			index++;
		} else {
			if(ferror(f)) error("Error in file!");
		}
	}
	
	fclose(f);

	var draw_y = 20;
	
	while(1)
	{
		draw_text(array[357141],20,draw_y,vector(255,255,255));
		wait(1);
	}
}



Hierbei sollte angemerkt sein: STRING ist verdammt langsam, also mehrere hunderte Male langsamer als "rohe" Stringfunktionen aus stdio.h
_________________________
Visit my site: www.masterq32.de

Top


Moderator:  HeelX, Lukas, Rei_Ayanami, VeT 

Gamestudio download | chip programmers | Zorro platform | shop | resources | magazine | manual | support faq | bugs

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) 3dgamestudio.net