Readstring corrientes de línea por línea


TLineStream implementación de la clase
Colaborador: MARTIN WALDENBURG

{ & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& nbsp | Clase: TLineStream
& nbsp | Creado: 8.97
& nbsp | Autor: Martin Waldenburg
& nbsp | derecho de Autor de 1997, todos los derechos reservados.
& nbsp | Descripción: TLineStream da en el buffer de acceso a las líneas de un
archivo.
& nbsp | Cada línea debe terminar con CRLF. No te olvides de vaciar la
& nbsp | Memoria después de la escritura.
& nbsp | Versión: 1.2
& nbsp | Estado: FreeWare
& nbsp | Descargo de responsabilidad:
& nbsp | Esto es como es, expresamente, sin garantía de ningún tipo.
& nbsp | Usted la utiliza en su propio risc.
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & }
unidad de mwLineStream
interfaz
usos
& nbsp & nbsp SysUtils, Classes
tipo
& nbsp & nbsp TLineStream = clase(TFileStream)
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp fLineStart: PChar
& nbsp & nbsp & nbsp & nbsp fMaxMemorySize:Longint
& nbsp & nbsp & nbsp & nbsp fMaxLineSize:Longint
& nbsp & nbsp & nbsp & nbsp fMemorySize: LongInt
& nbsp & nbsp & nbsp & nbsp fLineSize:Longint
& nbsp & nbsp & nbsp & nbsp fMemory:PChar
& nbsp & nbsp & nbsp & nbsp fLine: PChar
& nbsp & nbsp & nbsp & nbsp fFileEof:Boolean
& nbsp & nbsp & nbsp & nbsp fMemoryPos: LongInt
& nbsp & nbsp & nbsp & nbsp fEof:Boolean
& nbsp & nbsp & nbsp & nbsp función GetMemoryFull:Boolean
& nbsp & nbsp & nbsp & nbsp procedimiento SetMaxLineSize(NewValue:Longint)
& nbsp & nbsp & nbsp & nbsp procedimiento SetMaxMemorySize(NewValue:Longint)
& nbsp & nbsp protegido
& nbsp & nbsp pública
& nbsp & nbsp & nbsp & nbsp constructor create(Const FileName: string Modo: Word)
& nbsp & nbsp & nbsp & nbsp destructor destruir reemplazar
& nbsp & nbsp & nbsp & nbsp procedimiento FillMemory
& nbsp & nbsp & nbsp & nbsp función ReadLine:PChar
& nbsp & nbsp & nbsp & nbsp procedimiento WriteLine(NewLine: String)
& nbsp & nbsp & nbsp & nbsp procedimiento FlushMemory
& nbsp & nbsp & nbsp & nbsp procedimiento de Restablecimiento
& nbsp & nbsp & nbsp & nbsp propiedad MaxMemorySize:Longint leer fMaxMemorySize escribir
SetMaxMemorySize
& nbsp & nbsp & nbsp & nbsp propiedad MaxLineSize:Longint leer fMaxLineSize escribir SetMaxLineSize
& nbsp & nbsp & nbsp & nbsp propiedad de Memoria:PChar leer fMemory escribir fMemory
& nbsp & nbsp & nbsp & nbsp propiedad MemoryFull:Boolean leer GetMemoryFull
& nbsp & nbsp & nbsp & nbsp propiedad FileEof:Boolean leer fFileEof
& nbsp & nbsp & nbsp & nbsp propiedad Eof:Boolean leer fEof escribir fEof
& nbsp & nbsp publicado
& nbsp & nbsp end { TLineStream }
aplicación
constructor TLineStream.crear(Const FileName: string Modo: Word)
var
& nbsp & nbsp fHandle: Integer
begin
& nbsp & nbsp si no FileExists(nombre de archivo), a continuación,
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fHandle:= FileCreate(nombre de archivo)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp instrucciones fileclose(fHandle)
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp inherited create(nombre de archivo, Modo)
& nbsp & nbsp fEof:= False
& nbsp & nbsp fFileEof:= False
& nbsp & nbsp MaxMemorySize:= 65535
& nbsp & nbsp fMemorySize:= 0
& nbsp & nbsp fMemoryPos:= 0
& nbsp & nbsp MaxLineSize:= 4096
& nbsp & nbsp Posición:= 0
end { crea }
destructor TLineStream.destruir
begin

& nbsp & nbsp ReallocMem(fMemory, 0)
& nbsp & nbsp ReallocMem(fLine, 0)
& nbsp & nbsp heredado destruir
end { destruir }

procedimiento TLineStream.SetMaxMemorySize(NewValue:Longint)
begin
& nbsp & nbsp fMaxMemorySize:= NewValue
& nbsp & nbsp ReallocMem(fMemory, fMaxMemorySize 1)
end { SetMaxMemorySize }
procedimiento TLineStream.SetMaxLineSize(NewValue:Longint)
begin
& nbsp & nbsp fMaxLineSize:= NewValue
& nbsp & nbsp ReallocMem(fLine, fMaxLineSize 1)
end { SetMaxLineSize }
procedimiento TLineStream.FillMemory
var
& nbsp & nbsp Leida: LongInt
begin
& nbsp & nbsp Leida:= Leer(fMemory^, fMaxMemorySize)
& nbsp & nbsp fMemorySize:= Leida
& nbsp & nbsp si Leida = 0, entonces fFileEof:= True
& nbsp & nbsp si fMemorySize > 0, entonces
& nbsp & nbsp mientras fMemory[fMemorySize -2] <> #13 do dec(fMemorySize)
& nbsp & nbsp fMemory[fMemorySize]:= #0
& nbsp & nbsp Posición:= Posición -Leida fMemorySize 1
& nbsp & nbsp fLineStart:= fMemory
end { FillMemory }
función TLineStream.GetMemoryFull:Boolean
begin
& nbsp & nbsp si fMemorySize > 0 then Resultado:= True else Result:= False
end { GetMemoryFull }
función TLineStream.ReadLine:PChar
var
& nbsp & nbsp Ejecutar: PChar
begin
& nbsp & nbsp si (fMemorySize = 0) y no FileEof luego FillMemory
& nbsp & nbsp si fMemorySize > 0, entonces
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Ejecutar:= fLineStart
& nbsp & nbsp & nbsp & nbsp mientras Ejecutar^ <> #13 do inc(Ejecutar)
& nbsp & nbsp & nbsp & nbsp fLineSize:= Run - fLineStart
& nbsp & nbsp & nbsp & nbsp inc(Correr, 2)
& nbsp & nbsp & nbsp & nbsp StrLCopy(fLine, fLineStart, fLineSize)
& nbsp & nbsp & nbsp & nbsp fLine[fLineSize]:= #0
& nbsp & nbsp & nbsp & nbsp Resultado:= fLine
& nbsp & nbsp & nbsp & nbsp fLineStart:= Ejecutar
& nbsp & nbsp & nbsp & nbsp Caso Ejecutar^ #0: FillMemory final
& nbsp & nbsp final
& nbsp & nbsp si fMemorySize = 0, entonces fEof:= True
end { ReadLine }
procedimiento TLineStream.WriteLine(NewLine: String)
var
& nbsp & nbsp Contar, Pos: Longint
begin
& nbsp & nbsp NewLine:= Caracter #13#10
& nbsp & nbsp Count:= Longitud(nueva Línea)
& nbsp & nbsp si (fMemoryPos >= 0) y (Contador >= 0) a continuación,
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Pos := fMemoryPos Cuenta
& nbsp & nbsp & nbsp & nbsp si Pos > 0, entonces
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si Pos > FMaxMemorySize, a continuación,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp FlushMemory
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp StrECopy((fMemory fMemoryPos), PChar(NewLine))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fMemoryPos:= fMemoryPos Cuenta
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fMemory[fMemoryPos]:= #0
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp final
end { WriteLine }
procedimiento TLineStream.FlushMemory
begin
& nbsp & nbsp Escribir(fMemory^, fMemoryPos)
& nbsp & nbsp fMemoryPos:= 0
end { FlushMemory }
procedimiento TLineStream.Reset
begin
& nbsp & nbsp fEof:= False
& nbsp & nbsp fFileEof:= False
& nbsp & nbsp fMemorySize:= 0
& nbsp & nbsp fMemoryPos:= 0
& nbsp & nbsp Posición:= 0
end { Reset }
final.









Readstring corrientes de linea por linea


Readstring corrientes de linea por linea : Multi-millones de consejos para hacer su vida mas facil.


TLineStream implementacion de la clase
Colaborador: MARTIN WALDENBURG

{ & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
& nbsp | Clase: TLineStream
& nbsp | Creado: 8.97
& nbsp | Autor: Martin Waldenburg
& nbsp | derecho de Autor de 1997, todos los derechos reservados.
& nbsp | Descripcion: TLineStream da en el buffer de acceso a las lineas de un
archivo.
& nbsp | Cada linea debe terminar con CRLF. No te olvides de vaciar la
& nbsp | Memoria despues de la escritura.
& nbsp | Version: 1.2
& nbsp | Estado: FreeWare
& nbsp | Descargo de responsabilidad:
& nbsp | Esto es como es, expresamente, sin garantia de ningun tipo.
& nbsp | Usted la utiliza en su propio risc.
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & }
unidad de mwLineStream
interfaz
usos
& nbsp & nbsp SysUtils, Classes
tipo
& nbsp & nbsp TLineStream = clase(TFileStream)
& nbsp & nbsp privada
& nbsp & nbsp & nbsp & nbsp fLineStart: PChar
& nbsp & nbsp & nbsp & nbsp fMaxMemorySize:Longint
& nbsp & nbsp & nbsp & nbsp fMaxLineSize:Longint
& nbsp & nbsp & nbsp & nbsp fMemorySize: LongInt
& nbsp & nbsp & nbsp & nbsp fLineSize:Longint
& nbsp & nbsp & nbsp & nbsp fMemory:PChar
& nbsp & nbsp & nbsp & nbsp fLine: PChar
& nbsp & nbsp & nbsp & nbsp fFileEof:Boolean
& nbsp & nbsp & nbsp & nbsp fMemoryPos: LongInt
& nbsp & nbsp & nbsp & nbsp fEof:Boolean
& nbsp & nbsp & nbsp & nbsp funcion GetMemoryFull:Boolean
& nbsp & nbsp & nbsp & nbsp procedimiento SetMaxLineSize(NewValue:Longint)
& nbsp & nbsp & nbsp & nbsp procedimiento SetMaxMemorySize(NewValue:Longint)
& nbsp & nbsp protegido
& nbsp & nbsp publica
& nbsp & nbsp & nbsp & nbsp constructor create(Const FileName: string Modo: Word)
& nbsp & nbsp & nbsp & nbsp destructor destruir reemplazar
& nbsp & nbsp & nbsp & nbsp procedimiento FillMemory
& nbsp & nbsp & nbsp & nbsp funcion ReadLine:PChar
& nbsp & nbsp & nbsp & nbsp procedimiento WriteLine(NewLine: String)
& nbsp & nbsp & nbsp & nbsp procedimiento FlushMemory
& nbsp & nbsp & nbsp & nbsp procedimiento de Restablecimiento
& nbsp & nbsp & nbsp & nbsp propiedad MaxMemorySize:Longint leer fMaxMemorySize escribir
SetMaxMemorySize
& nbsp & nbsp & nbsp & nbsp propiedad MaxLineSize:Longint leer fMaxLineSize escribir SetMaxLineSize
& nbsp & nbsp & nbsp & nbsp propiedad de Memoria:PChar leer fMemory escribir fMemory
& nbsp & nbsp & nbsp & nbsp propiedad MemoryFull:Boolean leer GetMemoryFull
& nbsp & nbsp & nbsp & nbsp propiedad FileEof:Boolean leer fFileEof
& nbsp & nbsp & nbsp & nbsp propiedad Eof:Boolean leer fEof escribir fEof
& nbsp & nbsp publicado
& nbsp & nbsp end { TLineStream }
aplicacion
constructor TLineStream.crear(Const FileName: string Modo: Word)
var
& nbsp & nbsp fHandle: Integer
begin
& nbsp & nbsp si no FileExists(nombre de archivo), a continuacion,
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fHandle:= FileCreate(nombre de archivo)
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp instrucciones fileclose(fHandle)
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp inherited create(nombre de archivo, Modo)
& nbsp & nbsp fEof:= False
& nbsp & nbsp fFileEof:= False
& nbsp & nbsp MaxMemorySize:= 65535
& nbsp & nbsp fMemorySize:= 0
& nbsp & nbsp fMemoryPos:= 0
& nbsp & nbsp MaxLineSize:= 4096
& nbsp & nbsp Posicion:= 0
end { crea }
destructor TLineStream.destruir
begin

& nbsp & nbsp ReallocMem(fMemory, 0)
& nbsp & nbsp ReallocMem(fLine, 0)
& nbsp & nbsp heredado destruir
end { destruir }

procedimiento TLineStream.SetMaxMemorySize(NewValue:Longint)
begin
& nbsp & nbsp fMaxMemorySize:= NewValue
& nbsp & nbsp ReallocMem(fMemory, fMaxMemorySize 1)
end { SetMaxMemorySize }
procedimiento TLineStream.SetMaxLineSize(NewValue:Longint)
begin
& nbsp & nbsp fMaxLineSize:= NewValue
& nbsp & nbsp ReallocMem(fLine, fMaxLineSize 1)
end { SetMaxLineSize }
procedimiento TLineStream.FillMemory
var
& nbsp & nbsp Leida: LongInt
begin
& nbsp & nbsp Leida:= Leer(fMemory^, fMaxMemorySize)
& nbsp & nbsp fMemorySize:= Leida
& nbsp & nbsp si Leida = 0, entonces fFileEof:= True
& nbsp & nbsp si fMemorySize > 0, entonces
& nbsp & nbsp mientras fMemory[fMemorySize -2] <> #13 do dec(fMemorySize)
& nbsp & nbsp fMemory[fMemorySize]:= #0
& nbsp & nbsp Posicion:= Posicion -Leida fMemorySize 1
& nbsp & nbsp fLineStart:= fMemory
end { FillMemory }
funcion TLineStream.GetMemoryFull:Boolean
begin
& nbsp & nbsp si fMemorySize > 0 then Resultado:= True else Result:= False
end { GetMemoryFull }
funcion TLineStream.ReadLine:PChar
var
& nbsp & nbsp Ejecutar: PChar
begin
& nbsp & nbsp si (fMemorySize = 0) y no FileEof luego FillMemory
& nbsp & nbsp si fMemorySize > 0, entonces
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Ejecutar:= fLineStart
& nbsp & nbsp & nbsp & nbsp mientras Ejecutar^ <> #13 do inc(Ejecutar)
& nbsp & nbsp & nbsp & nbsp fLineSize:= Run - fLineStart
& nbsp & nbsp & nbsp & nbsp inc(Correr, 2)
& nbsp & nbsp & nbsp & nbsp StrLCopy(fLine, fLineStart, fLineSize)
& nbsp & nbsp & nbsp & nbsp fLine[fLineSize]:= #0
& nbsp & nbsp & nbsp & nbsp Resultado:= fLine
& nbsp & nbsp & nbsp & nbsp fLineStart:= Ejecutar
& nbsp & nbsp & nbsp & nbsp Caso Ejecutar^ #0: FillMemory final
& nbsp & nbsp final
& nbsp & nbsp si fMemorySize = 0, entonces fEof:= True
end { ReadLine }
procedimiento TLineStream.WriteLine(NewLine: String)
var
& nbsp & nbsp Contar, Pos: Longint
begin
& nbsp & nbsp NewLine:= Caracter #13#10
& nbsp & nbsp Count:= Longitud(nueva Linea)
& nbsp & nbsp si (fMemoryPos >= 0) y (Contador >= 0) a continuacion,
& nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp Pos := fMemoryPos Cuenta
& nbsp & nbsp & nbsp & nbsp si Pos > 0, entonces
& nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp si Pos > FMaxMemorySize, a continuacion,
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp empezar
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp FlushMemory
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp StrECopy((fMemory fMemoryPos), PChar(NewLine))
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fMemoryPos:= fMemoryPos Cuenta
& nbsp & nbsp & nbsp & nbsp & nbsp & nbsp fMemory[fMemoryPos]:= #0
& nbsp & nbsp & nbsp & nbsp final
& nbsp & nbsp final
end { WriteLine }
procedimiento TLineStream.FlushMemory
begin
& nbsp & nbsp Escribir(fMemory^, fMemoryPos)
& nbsp & nbsp fMemoryPos:= 0
end { FlushMemory }
procedimiento TLineStream.Reset
begin
& nbsp & nbsp fEof:= False
& nbsp & nbsp fFileEof:= False
& nbsp & nbsp fMemorySize:= 0
& nbsp & nbsp fMemoryPos:= 0
& nbsp & nbsp Posicion:= 0
end { Reset }
final.


Readstring corrientes de línea por línea

Readstring corrientes de línea por línea : Multi-millones de consejos para hacer su vida más fácil.
Recommander aux amis
  • gplus
  • pinterest

Comentario

Dejar un comentario

Clasificación