¡Cuanto tiempo!
Resulta que estoy haciendo un programita y TENGO que hacerlo en Delphi... y echo de menos mi querido C. Lo que quiero es leer de un archivo de texto valores reales y detectar cuando llega el fin de línea. Será una tontería, lo sé, pero es que estoy empezando a plantearme programar un analizador léxico para hacer algo que seguro que es mucho más fácil.
A ver si me podéis echar una manilla. ¡Gracias por adelantado!
PD: También se aceptan enlaces a páginas de Delphi donde pueda encontrar una solución ;)
No te "cabrees", que Delphi es mu sencillo y mu agradable de utilizar ;)
Venga, aqui va un ejemplo de como leer una linea completa de texto. No es leer reales, pero luego puedes analizar la cadena:
function leerfichero(const Path:string):string;
Var F : TextFile;
Linea : String;
begin
Result := ''; // Cadena vacia
if FileExists(Path) then
begin
Assign(F,Path);
Reset(F);
while not Eof(F) do
begin
ReadLn(F, Linea); // Lee una Linea en Linea :)
Result := Result + Linea + #13#10;
end;
CloseFile(F);
end;
end;
Otra forma:
var _st : TStringList;
_c : longint;
begin
_st := TStringList.Create();
try
_st.LoadFromFile('archivo.txt');
except
// mierda, no se cargo el archivo...
end;
for _c := 0 to _st.Count - 1 do
begin
// haz aqui lo que tengas que hacer
end;
_st.Free;
end;
Por cierto, aqui tienes un ejemplo de como hacer el "split" de visual basic en delphi:
http://delphi.about.com/cs/adptips2002/a/b...bltip1102_5.htmel resto seria hacer un strtofloat para convertir de cadena a numero real.
Con todo eso tienes el asunta casi ya hecho. Si no te aclaras, esplica mejor que es exactamente lo que quieres hacer y en un plis te montamos el codigo que necesitas. (no te pases pidiendo, eh :P)
Joe, tios... ¡Sois la ostia! ¡Muchas gracias! Habéis sido rapidísimos (ole)
Todavía no lo he probado pero seguro que me será de mucha ayuda. Cuando termine el código os lo pasaré, aunque solo sea para que veáis que me ha servido de algo (uoh) .
De nuevo gracias ;)
Lo prometido es deuda! He estado sin internet casi todo el verano, por eso no he podido escribir antes.
Ahí va un código para leer una tabla de datos reales en formato de texto en Delphi. La primera fila del archivo son los títulos de cada columna.
procedure split (const delimiter: Char; input: String; const strings: TStrings);
begin
assert(assigned(strings));
strings.Clear;
strings.delimiter:=delimiter;
strings.delimitedText:=input;
end;
procedure abrir(nombre: String);
var
st, aux : TStringList;
cad : String;
i, j : LongInt;
begin
try
st:=TStringList.create();
st.LoadFromFile(nombre);
NombreArchivo:=nombre;
grdDatos.RowCount:=st.Count;
aux:=TStringList.create();
split(' ', st[0], aux); // No sé por qué pero así se salta también los tabuladores, creo
grdDatos.ColCount:=max(grdDatos.ColCount,aux.Count);
for j:=0 to aux.count-1 do begin
grdDatos.Cells[j,0]:=aux[j];
end;
aux.free;
for i:=1 to st.count-1 do begin
aux:=TStringList.create();
split(' ', st[i], aux);
grdDatos.ColCount:=max(grdDatos.ColCount,aux.Count);
for j:=0 to aux.count-1 do begin
grdDatos.Cells[j,i]:=floattostr(strtofloat(aux[j])); // Esto es para ver si son en realidad número reales (nooo)
end;
aux.free;
end;
st.free;
except
ShowMessage('Error al leer el archivo '+nombre);
end;
end;
Muchas gracias por las respuestas que me distéis en su día rrc2soft y Lord Trancos 2 ¡me han servido todas!
PD: Es cierto, el Delphi es mu sencillito!
;)