unit uMain;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
sqlite3conn, sqldb;
type
{ Tfrm_wyckermain }
Tfrm_wyckermain = class(TForm)
btnLoad: TButton;
Button1: TButton;
Button2: TButton;
Conn: TSQLite3Connection;
FileNameEdit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
lblFilename: TLabel;
OpenDialog1: TOpenDialog;
SQLQuery: TSQLQuery;
TX: TSQLTransaction;
procedure btnLoadClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
procedure wyckerechoload;
end;
var
frm_wyckermain: Tfrm_wyckermain;
implementation
{$R *.lfm}
{ Tfrm_wyckermain }
procedure Tfrm_wyckermain.btnLoadClick(Sender: TObject);
begin
wyckerechoload;
end;
procedure Tfrm_wyckermain.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
FileNameEdit1.Text:= OpenDialog1.FileName;
end;
procedure Tfrm_wyckermain.Button2Click(Sender: TObject);
begin
SQLQuery.SQL.Text:= 'CREATE TABLE IF NOT EXISTS mytable' +
'(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,' +
'echotag VARCHAR NOT NULL,' +
'hubaddr VARCHAR NOT NULL);';
SQLQuery.ExecSQL;
TX.Commit;
end;
procedure Tfrm_wyckermain.FormCreate(Sender: TObject);
begin
Conn.DatabaseName:=ProgramDirectory + 'mydb.db';
FileNameEdit1.Text:= ProgramDirectory + 'area.bbs';
end;
procedure Tfrm_wyckermain.wyckerechoload;
var
s, echoTag, echosys: string;
echoCount: integer;
tfIn: TextFile;
begin
if FileNameEdit1.Text <> '' then
begin
if not FileExists(FileNameEdit1.Text) then
begin
ShowMessage(FileNameEdit1.Text + 'Doesn''t exist!');
Exit;
end;
SQLQuery.SQL.Text:='INSERT INTO mytable(echotag, hubaddr) VALUES(:echotag, :hubaddr)';
echoCount := 0;
// Logger.Info(sImportEchos);
// Set the name of the file that will be read
AssignFile(tfIn, FileNameEdit1.Text);
try
// Open the file for reading
Label3.Caption := 'sOpeningFIle';
reset(tfIn);
Application.ProcessMessages;
Sleep(25);
Label3.Caption := 'sReadingFile';
// Keep reading lines until the end of the file is reached
while not eof(tfIn) do
begin
readln(tfIn, s);
echoCount := echocount + 1;
echoTag := 'echotag ' +IntToStr(echoCount);
echosys := 'hub address ' +IntToStr(echoCount);
Application.ProcessMessages;
Sleep(10);
Label5.Caption := echoTag;
SQLQuery.ParamByName('echotag').AsString:= echoTag;
Label7.Caption := echoSys;
SQLQuery.ParamByName('hubaddr').AsString:= echoSys;
SQLQuery.ExecSQL;
end;
CloseFile(tfIn);
// SQLQuery.ApplyUpdates; // Not needed when ExecSQL is used
TX.Commit; // <-- Needed to save to disk in db.
// Logger.Info(sImportComplete);
Label5.Caption := 'sImported' + IntToStr(echoCount) + 'sEchoes';
Label7.Caption := '';
Label3.Caption := 'sFileImportComplete';
except
on E: EInOutError do
;//Logger.Error(sImportError);
end;
end
else
begin
ShowMessage('sFileSelect');
end;
end;
end.