ich habe heute ein neues kleines Tool erstellt.
Jedes mal wenn ich das Tool schließe bzw. das Debuggen mit dem roten Quadrat stoppe, nachdem ich mit auf den Button "BT_ju_abfrage_oeffnen" geklickt habe, kommt es zu der angehängten Fehlermeldung, hierbei spiel es keine Rolle ob eine Datei im Dialog ausgewählt wurde oder nicht. Was mache ich falsch?
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Grids, EingabenPruefen;
type
{ TForm1 }
TForm1 = class(TForm)
BT_ju_abfrage_oeffnen: TButton;
BT_RexxErgOeffnen: TButton;
Edit1: TEdit;
ODJuniper_Abfrage_Oeffnen: TOpenDialog;
ODRexxErgebnis: TOpenDialog;
LB_Pfad_RexxScript: TStaticText;
SG_Interface_unit: TStringGrid;
SGRexxImport: TStringGrid;
procedure BT_ju_abfrage_oeffnenClick(Sender: TObject);
procedure BT_RexxErgOeffnenClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
procedure RexxScriptErzeugen;
public
end;
const CRLF = #13#10;
ifindex_vor = 'CALL ZocSend "show interfaces ';
ifindex_nach = ' | match ifindex^M"';
ZocWait = 'CALL ZocWait ">"' + CRLF;
CallZocWrite = 'CALL ZocWrite ';
var
Form1: TForm1;
Dateiname_abfrage_ju_interface : string;
Dateiname_Rexx_Ausgabe : string;
RexxScript_Ausgabe : string;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.BT_ju_abfrage_oeffnenClick(Sender: TObject);
begin
if ODJuniper_Abfrage_Oeffnen.Execute then
begin
Dateiname_abfrage_ju_interface := ODJuniper_Abfrage_Oeffnen.Filename;
SG_Interface_unit.LoadFromCSVFile(Dateiname_abfrage_ju_interface);
RexxScriptErzeugen;
end;
end;
procedure TForm1.BT_RexxErgOeffnenClick(Sender: TObject);
begin
if ODRexxErgebnis.Execute then
begin
Dateiname_Rexx_Ausgabe := ODRexxErgebnis.FileName;
SGRexxImport.LoadFromCSVFile(Dateiname_Rexx_Ausgabe);
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Application.MainForm.Close;
end;
procedure TForm1.RexxScriptErzeugen;
var i : integer;
posinterfaces : integer;
posunit : integer;
posdescrition : integer;
lz_nach_inter : integer;
lz_nach_unit : integer;
semikolon : integer;
Zeile : string;
inter : string;
vlan : string;
kunde : string;
downloadpath : string;
begin
RexxScript_Ausgabe := '';
for i:= 0 to SG_Interface_unit.RowCount - 1
do
begin
zeile := SG_Interface_unit.Cells[0,i];
posinterfaces := pos('interfaces ',Zeile);
posunit := pos(' unit ',Zeile);
semikolon := pos('"',zeile);
if (posunit <> 0) and (posinterfaces <> 0) and (semikolon <> 0)
then
begin
posdescrition := pos(' description "', Zeile);
inter := copy (Zeile, posinterfaces + 11, posunit - 1 - posinterfaces - 10);
vlan := copy (Zeile, posunit + 6, posdescrition - posunit - 5);
kunde := copy (Zeile, posdescrition + 13);
RexxScript_Ausgabe := RexxScript_Ausgabe + CallZocWrite + Kunde + CRLF +
ifindex_vor + inter + '.' + vlan + ifindex_nach + CRLF +
ZocWait;
end;
end;
downloadpath := GetUserDir + 'downloads\ju_ifindex_abfrage.zrx';
LB_Pfad_RexxScript.Caption:=downloadpath;
SaveStringToFile(downloadpath, RexxScript_Ausgabe);
end;
end.