Array
(
)

Importação de Arquivos Dat com Substituição de Texto

Lucasmb7
   - 13 set 2017

Boa noite,
Estou importando um arquivo DAT em um ListView, preciso que antes que seja feita a importação o programa procure a expressão {keyword} nos itens e que essa mesma expressão seja substituída pelo texto de um Edit.
Exemplo:
Item original no arquivo .dat: "As 7 maravilhas do {keyword}"
Texto do Edit: "Emagrecimento"
Item importado no Listview: "As 7 maravilhas do Emagrecimento"
Como eu poderia fazer isso?

Lucasmb7
   - 13 set 2017

Estou usando o seguinte código:

#Código

procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ListView1Data(Sender: TObject; Item: TListItem);
    procedure BtnLoadFromFileClick(Sender: TObject);
  private
    procedure LoadFromFile(AFileName: string);
  public
    { Public declarations }
  end;

  TMyRecord = record
    name: string;
    address: string;
    floatfield: Single;
    integerfield: Integer;
  end;

var
  Form1: TForm1;
  MyList: TList<TMyRecord>;



Continuação dos códigos:

#Código
procedure TForm1.FormCreate(Sender: TObject);
begin
  MyList := TList<TMyRecord>.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  MyList.Free;
end;

procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
begin
  Item.Caption := MyList[Item.Index].name;
  Item.SubItems.Add(MyList[Item.Index].address);
  Item.SubItems.Add(FloatToStr(MyList[Item.Index].floatfield));
  Item.SubItems.Add(IntToStr(MyList[Item.Index].integerfield));
end;

procedure TForm1.LoadFromFile(AFileName: string);
var
  MyFileStream: TFileStream;
  MyBinaryReader: TBinaryReader;
  temprecord: TMyRecord;
  I, TempNumber: Integer;
begin
  MyFileStream := TFileStream.Create(AFileName, fmOpenRead);
  MyBinaryReader := TBinaryReader.Create(MyFileStream,
    TEncoding.Unicode, false);
  MyList.Clear;
  try
    TempNumber := MyBinaryReader.ReadInteger;
    for I := 0 to TempNumber - 1 do
    begin
      temprecord.name := MyBinaryReader.ReadString;
      temprecord.address := MyBinaryReader.ReadString;
      temprecord.floatfield := MyBinaryReader.ReadSingle;
      temprecord.integerfield := MyBinaryReader.ReadInteger;
      MyList.Add(temprecord);
    end;
    ListView1.Items.Count := MyList.Count;
    MyBinaryReader.Close;
  finally
    MyBinaryReader.Free;
    MyFileStream.Free;
  end;
end;


procedure TForm1.BtnLoadFromFileClick(Sender: TObject);
begin
  if OpenDialog1.Execute then
    LoadFromFile(OpenDialog1.FileName);
end;

end.