unit ListMaker;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
BtnLoad: TButton;
BtnDisplay: TButton;
BtnSave: TButton;
Edit1: TEdit;
Edit10: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Label1: TLabel;
Label10: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
ListBox1: TListBox;
Memo1: TMemo;
procedure BtnLoadClick(Sender: TObject);
private
public
end;
TDirs = packed record
Dest: String;
Trail: String;
Loc: String;
Time: String;
Mileage: String;
Trac: String;
MCNum: String;
Stop: String;
Diesel: String;
Scales: String;
Dirs: String;
end;
var
Dir: array of TDirs;
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.BtnLoadClick(Sender: TObject);
var
sl : TStringList;
i, x, y : Integer;
Temp: Array[1..30] of String;
begin
sl := TStringList.Create;
Memo1.Lines.Clear;
try
sl.LoadFromFile('Routes.txt');
SetLength(Dir, 0);
i := 0;
ListBox1.Items.Assign(sl);
while i < sl.Count do
begin
if Trim(sl[i]) = '' then
begin
If i < sl.Count Then Inc(i);
Continue;
end; // If Trim
SetLength(Dir, Length(Dir) + 1);
with Dir[High(Dir)] do
begin
Dest := Trim(sl[i]);
If i < sl.Count Then Inc(i);
Trail := Trim(sl[i]);
If i < sl.Count Then Inc(i);
Loc := Copy(sl[i], Pos(':', sl[i]) + 2, MaxInt);
If i < sl.Count Then Inc(i);
Time := Copy(sl[i], Pos(':', sl[i]) + 2, MaxInt);
If i < sl.Count Then Inc(i);
Mileage := Copy(sl[i], Pos(':', sl[i]) + 2, MaxInt);
If i < sl.Count Then Inc(i);
Trac := Copy(sl[i], Pos(':', sl[i]) + 2, MaxInt);
If i < sl.Count Then Inc(i);
MCNum := Copy(sl[i], Pos(':', sl[i]) + 2, MaxInt);
If i < sl.Count Then Inc(i);
End; // First With Statement
Memo1.Lines.Add('FieldName:' + Trim(Copy(sl[i], 0, Pos(':', sl[i]) - 1)) + '---');
If Trim(Copy(sl[i], 0, Pos(':', sl[i]) - 1)) = 'Stop' Then
Begin
Dir[High(Dir)].Stop := Copy(sl[i], Pos(':', sl[i]) + 2, MaxInt);
If i < sl.Count Then Inc(i);
End;
with Dir[High(Dir)] do
begin
Diesel := Copy(sl[i], Pos(':', sl[i]) + 2, MaxInt);
If i < sl.Count Then Inc(i);
Scales := Copy(sl[i], Pos(':', sl[i]) + 2, MaxInt);
If i < sl.Count Then Inc(i);
Dirs := Copy(sl[i], Pos(':', sl[i]) + 2, MaxInt);
If i < sl.Count Then Inc(i);
end; // Second With Statement
// Directions
x:=1;
Dir[High(Dir)].Dirs := '';
Memo1.Lines.Add(IntToStr(Pos('Location:', Trim(sl[i]))));
While (i < sl.Count) and (Pos('Location:', Trim(sl[i])) = 0) and (x<=Length(Temp)) Do
Begin
Memo1.Lines.Add('Herein lies i: ' + IntToStr(i) + '. And the count is: ' + IntToStr(sl.Count));
Memo1.Lines.Add('----- ' + IntToStr(x) + ' -----' + Trim(sl[i]));
Temp[x]:= Trim(sl[i]);
Memo1.Lines.Add('Hereafter lies i: ' + IntToStr(i) + '. And the count is: ' + IntToStr(sl.Count));
If i < sl.Count Then Inc(i);
Memo1.Lines.Add('After the Inc i: ' + IntToStr(i) + '. And the count is: ' + IntToStr(sl.Count));
Inc(x);
End;
Memo1.Lines.Add('Found Location ' + Trim(sl[i]));
For y := 1 to x - 3 Do Dir[High(Dir)].Dirs := Dir[High(Dir)].Dirs + Temp[y];
i := i - 2;
end; // While i < sl.Count
finally
sl.Free;
end;
end;
end.