Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   lectura y escritura en un archivo de texto (https://www.clubdelphi.com/foros/showthread.php?t=65828)

torito 15-01-2010 16:36:52

lectura y escritura en un archivo de texto
 
Hola amigos foreros, hace rato que me habia alejado de mi delphi querido, pero ahora nuevamente sale como mi heroe, fijense que tengo un archivo de texto xml, el cual requiero ingresar para poder tomar texto en forma de lectura y en otras ocasiones de edición también, pudieran auxiliarme en esto??

de antemano muchas gracias

genius 15-01-2010 16:45:59

Creo q esto te puede servir.. aunque no lo he probado todavia ..suerte:D

Código Delphi [-]
 
unit uCiaXml;
interface
uses
  Forms, SysUtils, Windows, XmlIntf, XMLDoc;
type
  TXMLConfig = class
  private
    FModified: Boolean;
    FFileName: string;
    FXMLDoc: TXMLDocument;
    FBackup: Boolean;
    function GetVersion: string;
  public
    constructor Create(const FileName: string); overload;
    constructor Create; overload;
    destructor Destroy; override;
    procedure Save;
    function ReadString(const Section, Key, default: string): string;
    procedure WriteString(const Section, Key, Value: string);
    function ReadInteger(const Section, Key: string; default: Integer): Integer;
    procedure WriteInteger(const Section, Key: string; Value: Integer);
    function ReadBoolean(const Section, Key: string; default: Boolean): Boolean;
    procedure WriteBoolean(const Section, Key: string; Value: Boolean);
    property Backup: Boolean read FBackup write FBackup;
    property Version: string read GetVersion;
  end;
implementation
{ TXMLConfig }
constructor TXMLConfig.Create(const FileName: string);
begin
  inherited Create;
  FBackup         := True;
  FFileName       := FileName;
  FXMLDoc         := TXMLDocument.Create(Application);
  FXMLDoc.Options := [doNodeAutoIndent];
  if FileExists(FFileName) then
    FXMLDoc.LoadFromFile(FFileName)
  else 
  begin
    FXMLDoc.Active := True;
    FXMLDoc.AddChild('Configuration');
  end;
end;
constructor TXMLConfig.Create;
begin
  Create(ChangeFileExt(Application.Exename, '_cfg.xml'));
end;
destructor TXMLConfig.Destroy;
begin
  Save;
  FXMLDoc.Destroy;
  inherited;
end;
function TXMLConfig.GetVersion: string;
begin
  Result := '1.00';
end;
function TXMLConfig.ReadBoolean(const Section, Key: string; default: Boolean): Boolean;
begin
  Result := Boolean(ReadInteger(Section, Key, Integer(default)));
end;
function TXMLConfig.ReadInteger(const Section, Key: string; default: Integer): Integer;
begin
  Result := StrToInt(ReadString(Section, Key, IntToStr(default)));
end;
function TXMLConfig.ReadString(const Section, Key, default: string): string;
var
  Node: IXMLNode;
begin
  Node := FXMLDoc.DocumentElement.ChildNodes.FindNode(Section);
  if Assigned(Node) and Node.HasAttribute(Key) then
    Result := Node.Attributes[Key]
  else
    Result := default;
end;
procedure TXMLConfig.Save;
begin
  if not FModified then
    Exit;
  if FBackup then
    CopyFile(PChar(FFileName), PChar(FFileName + '.bak'), False);
  FXMLDoc.SaveToFile(FFileName);
  FModified := False;
end;
procedure TXMLConfig.WriteBoolean(const Section, Key: string; Value: Boolean);
begin
  WriteInteger(Section, Key, Integer(Value));
end;
procedure TXMLConfig.WriteInteger(const Section, Key: string; Value: Integer);
begin
  WriteString(Section, Key, IntToStr(Value));
end;
procedure TXMLConfig.WriteString(const Section, Key, Value: string);
var
  Node: IXMLNode;
begin
  if ReadString(Section, Key, '') = Value then
    Exit;
  Node := FXMLDoc.DocumentElement.ChildNodes.FindNode(Section);
  if not Assigned(Node) then
    Node := FXMLDoc.DocumentElement.AddChild(Section);
  Node.Attributes[Key] := Value;
  FModified := True;
end;
end.

torito 15-01-2010 21:28:36

Muchas gracias, voy a revisarlo.

Jopeh 16-01-2010 13:31:05

Necesito ayuda para un proyecto
 
Hice un Editor de Texto con un control sacado de Torry.net para ocultar la app en la bandeja de sistema y está funcionando muy bien. Pero se me complica el algoritmo de búsqueda de una cadena de texto en el control Memo. ¿Podrían ayudarme con eso?
Desde ya, muchas gracias.

Neftali [Germán.Estévez] 18-01-2010 10:10:11

Cita:

Empezado por Jopeh (Mensaje 350933)
Hice un Editor de Texto....

Por favor Joseh, revisa la Guía de estilo de los foros y no mezcles temas.


La franja horaria es GMT +2. Ahora son las 01:21:17.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi