unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
type
TForm1 =
class(TForm)
Button1: TButton;
Button2: TButton;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const Dateiname = '
C:\boot.ini';
// gibt's ab WinNT
procedure TForm1.FormCreate(Sender: TObject);
begin
// StringGrid1 soll 2 Spalten haben (eine kleine und eine große Spalte)
StringGrid1.ColCount := 2;
StringGrid1.ColWidths[1] := StringGrid1.Width - StringGrid1.ColWidths[0] - 30;
StringGrid1.RowCount := 1;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
f: TextFile;
s:
string;
begin
// hier wird eine Textdatei geöffnet und zeilenweise ausgelesen
// StringGrid auf eine Zeile reduzieren
StringGrid1.RowCount := 1;
// Datei öffnen
AssignFile(f, Dateiname);
Reset(f);
// solange das Dateiende noch nicht erreicht ist
while not eof(f)
do
begin
// Zeile aus Textdatei in string lesen
Readln(f, s);
// in die linke Spalte wird die Zeilennummer geschrieben
StringGrid1.Cells[0,StringGrid1.RowCount-1] := IntToStr(StringGrid1.RowCount);
// in die rechte Spalte die Textzeile
StringGrid1.Cells[1,StringGrid1.RowCount-1] := s;
// Nach jedem Schreiben wird eine Zeile angehängt
StringGrid1.RowCount := StringGrid1.RowCount + 1;
end;
// Letzte (zuviel) angehängte Zeile wieder entfernen
StringGrid1.RowCount := StringGrid1.RowCount - 1;
// Datei schliessen
CloseFile(f);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
sl: TStringList;
i: integer;
begin
// StringListe im Speicher erzeugen und initialisieren
sl := TStringList.Create;
try
// Text wird in eine StringListe geladen
sl.LoadFromFile(Dateiname);
// StringGrid wird auf die "richtige" Zeilenanzahl eingestellt
StringGrid1.RowCount := sl.Count;
// Text wird direkt in 2. Spalte übertragen
StringGrid1.Cols[1].Assign(sl);
// die "Zeilennummern" werden in einer For Schleife in die 1. Spalte geschrieben
for i := 0
to sl.Count -1
do
begin
StringGrid1.Cells[0,i] := IntToStr(i+1);
end;
finally
// StringListe wieder aus dem Speicher entfernen
sl.Free;
end;
end;
end.