Os dejo unas funciones que sirven a modo genérico para cualquier programa, se trata de un string tokenizer.
La primera función retorna el número de tokens que contiene el string pasado como parámetro, y la segunda devuelve el token solicitado.
Osea, con strTokenCount() podemos saber el número de "palabras" que contiene un string, y con strGetToken() recuperamos la palabra indicada como parámetro.
A disfrutarlas!
Usos comunes:
- Leer una linea de un archivo de texto y separar palabra a palabra la información leida para usarla como uno prefiera..
- En mi caso, leer de un archivo puntos de control con el formato: x "espacio" y y poder separar facilmente los datos.
// Funciones de apoyo para simular un string tokenizer de java..
//---------------------------------------------------------
function strtokencount( string str_ );
private
int strSize;
int tokensSize;
begin
strSize = strlen( str_ );
if(strSize == 0)
Return(0);
end
for(x=0; x<strSize; x++)
if(str_
- == " ")
tokensSize++;
end
end
Return(tokensSize+1);
end
//---------------------------------------------------------
function string strGetToken( string str_, int tokenNumber_ );
private
string buffer_ = "";
int strSize;
int tokenCounter_;
begin
strSize = strlen( str_ ) + 1;
if(strSize == 0)
Return(0);
end
// add SPACE on start position of string..
str_ = " " + str_;
// Find correct token from str_..
tokenCounter_ = 0;
for(x=0; x<strSize; x++)
if(str_ - == " ")
tokenCounter_ ++;
end
if(tokenCounter_ == tokenNumber_)
x++;
break;
end
end
// dump token to buffer..
for(y=x; y<strSize; y++)
if(str_[y] != " ")
buffer_ += str_[y];
else
break;
end
end
Return(buffer_);
end
No sale bien.. lo dejo en un txt.
Parece útil la verdad, ¡gracias Erko!
Vaya.. no conocía la función SPLIT() de bennuGD, la cosa cambia bastante usandola jeje.. sorry.. este viejo divero no está al día de todo lo que tiene este lenguaje ::)
Así está bastante mejor.
function strTokenCount( string str_ );
private
string tokenList[256];
int tokens;
begin
tokens = split(" ",str_,&tokenList,256);
Return(tokens);
end
//--------------------------------------------------------------
function strGetToken(string str_, int tokenNumber_, string * outToken_);
private
string tokenList[256];
int tokens;
begin
tokens = split(" ",str_,&tokenList,256);
*outToken_ = tokenList[tokenNumber_-1];
return(0);
end
bueno, iba a sugerir exactamente lo mismo...
La he descubierto leyendo la wiki, es bastante útil.
;D. Ya ves yo tb la iba a sugerir . Que sería de mi sin el split para hacer .inis. :)