Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Взять один символ из потока памяти

01.01.2007
unit MsFormR;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;
 
type
  TForm1 = class(TForm)
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Memo1: TMemo;
    ListBox1: TListBox;
    Panel1: TPanel;
    Button1: TButton;
    Button2: TButton;
    Splitter1: TSplitter;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    MemStr1: TMemoryStream;
  public
    procedure ShowMemStr;
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.DFM}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  MemStr1 := TMemoryStream.Create;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  Str1: TFileStream;
begin
  OpenDialog1.Filter :=
    'Any file (*.*)|*.*';
  OpenDialog1.DefaultExt := '*';
  if OpenDialog1.Execute then
  begin
    Str1 := TFileStream.Create (
      OpenDialog1.Filename, fmOpenRead);
    try
      MemStr1.LoadFromStream (Str1);
      ShowMemStr;
      Button2.Enabled := true;
    finally
      Str1.Free;
    end;
  end;
end;
 
procedure TForm1.ShowMemStr;
begin
  Memo1.Lines.LoadFromStream (MemStr1);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
const
  ndx: LongInt = 1;
var
  pch:  PChar;
  tmpC: Char;
begin
  pch := MemStr1.Memory;
  tmpC := pch[ndx];
  pch[ndx] := #0;
  ListBox1.Items.SetText(MemStr1.Memory);
  pch[ndx] := tmpC;
 
  if ndx < MemStr1.Size then
    Inc(ndx)
  else
    Button2.Enabled := False;
end;
 
end.

Взято с https://delphiworld.narod.ru