06-12-2023, Saat: 14:04
Selam, çok kısa bahsedeyim maskedit1 MC__ dir. mask edite girilen 2 haneli numarayı örneğin "MC12" program alıp belirli ip adresinin sonuna 10 ekleyerek, yani 10.45.13.__ yerine... eklendiğinde 10.45.13.(12+10) yani 10.45.13.22 şeklinde girmesini sağlamak kısaca mantık bu ben bu başta bulunan sabit ip yi (10.45.13.) ve kaç ekleneceğini (10) .ini dosyasından çekmesini istiyorum. ne yaptıysam başaramadım bu ana formumda değil yardımcı olabilecek var mı?
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Imaging.pngimage, Vcl.ExtCtrls,
Vcl.StdCtrls, IniFiles, StrUtils, ShellAPI, Vcl.Mask,System.IOUtils,Unit2;
type
TForm1 = class(TForm)
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Panel1: TPanel;
Timer1: TTimer;
MaskEdit1: TMaskEdit;
Button3: TButton;
procedure Button2Click(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Edit2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure MaskEdit1KeyPress(Sender: TObject; var Key: Char);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
function LoadSettings: Boolean;
procedure ReadSettingsFromIniFile;
public
{ Public declarations }
end;
var
Form1: TForm1;
analink: String;
IPBase: String;
IPAddition: Integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
if not LoadSettings then
begin
// Ayarlar yüklenirken bir hata oluştu veya dosya bulunamadı gibi durumlarda buraya gelebilirsiniz.
// Burada varsayılan değerleri atayabilir veya gerekli işlemleri gerçekleştirebilirsiniz.
IPBase := '10.45.12.';
IPAddition := 10;
end;
end;
procedure TForm1.ReadSettingsFromIniFile;
var
IniFile: TIniFile;
begin
IniFile := TIniFile.Create('C:\Users\IT GETUCON\Documents\Embarcadero\Studio\Joint_To_Script\Win64\Debug\settings.ini');
try
IPBase := IniFile.ReadString('ConnectionSettings', 'IPBase', '10.45.12.');
IPAddition := IniFile.ReadInteger('ConnectionSettings', 'IPAddition', 10);
finally
IniFile.Free;
end;
end;
function IsValidEntry(s:String):Boolean;
begin
Result := Length(s) >= 4;
end;
function TForm1.LoadSettings: Boolean;
var
IniFilePath: string;
IniFile: TIniFile;
begin
Result := False;
try
// INI dosyasının yolu oluşturuluyor
IniFilePath := TPath.Combine(TPath.GetHomePath, 'C:\Users\IT GETUCON\Documents\Embarcadero\Studio\Joint_To_Script\Win64\Debug\settings.ini');
// INI dosyasını okumak için TIniFile nesnesi oluşturuluyor
IniFile := TIniFile.Create(IniFilePath);
try
// INI dosyasından değerler okunuyor
IPBase := IniFile.ReadString('ConnectionSettings', 'IPBase', '10.45.12.');
IPAddition := IniFile.ReadInteger('ConnectionSettings', 'IPAddition', 10);
Result := True; // Ayarlar başarıyla yüklendiğinde Result değerini True yap
finally
IniFile.Free; // TIniFile nesnesini serbest bırak
end;
except
on E: Exception do
ShowMessage('Ayarlar yüklenirken bir hata oluştu: ' + E.Message);
end;
end;
procedure TForm1.MaskEdit1KeyPress(Sender: TObject; var Key: Char);
var
TextInMaskEdit: string;
CursorPos: Integer;
begin
TextInMaskEdit := MaskEdit1.Text;
CursorPos := MaskEdit1.SelStart;
if Key = #8 then // Eğer Backspace tuşuna basıldıysa
begin
if (CursorPos >= 1) and (Copy(TextInMaskEdit, CursorPos, 2) = 'MC') then
begin
// Eğer imleç "MC" metninin içindeyse, silmeyi engelle
Key := #0;
end;
end;
end;
procedure ExecuteRemoteDesktop(const username, password, link: string);
begin
ShellExecute(0, 'open', PChar('cmdkey'), PChar('/add:'+link+' /user:'+username+' /pass:'+password), '', SW_SHOWNORMAL);
ShellExecute(0, 'open', PChar('mstsc'), PChar('/v:'+link+' /f'), '', SW_SHOWNORMAL);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
username: string;
password: string;
link: string;
begin
if (IsValidEntry(MaskEdit1.Text) and IsValidEntry(Edit2.Text)) then
begin
username := 'mc\' + MaskEdit1.Text;
password := Trim(Edit2.Text);
link := IPBase + IntToStr(StrToInt(AnsiRightStr(Trim(username), 2)) + IPAddition);
analink := link;
ExecuteRemoteDesktop(username, password, link);
Timer1.Interval := 15000;
Timer1.Enabled := True;
Form1.Visible := False;
Application.Terminate;
end
else
ShowMessage('Benutzername und Passwort dürfen nicht leer sein.');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
ConfirmExit: Integer;
begin
ConfirmExit := MessageDlg('Möchten Sie wirklich beenden?', mtConfirmation, [mbYes, mbNo], 0);
if ConfirmExit = mrYes then
Close;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Form2.Show;
Form1.Hide;
end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
TextInEdit: string;
begin
if Key = VK_BACK then // Eğer Backspace tuşuna basıldıysa
begin
TextInEdit := MaskEdit1.Text;
// Eğer "MC" metni Edit1 içinde mevcutsa ve seçili bölge "MC" metnini içeriyorsa
if (Pos('MC', TextInEdit) > 0) and
((MaskEdit1.SelStart <= Pos('MC', TextInEdit)) and
(MaskEdit1.SelStart + MaskEdit1.SelLength >= Pos('MC', TextInEdit) + Length('MC'))) then
begin
// Silme işlemini engelle
Key := 0;
end;
end;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
TextInEdit: string;
MCPos, SelectionStart, SelectionEnd: Integer;
begin
if Key = #8 then // Eğer Backspace tuşuna basıldıysa
begin
TextInEdit := MaskEdit1.Text;
MCPos := Pos('MC', TextInEdit);
SelectionStart := MaskEdit1.SelStart + 1; // Seçimin başlangıç pozisyonu
SelectionEnd := SelectionStart + MaskEdit1.SelLength; // Seçimin bitiş pozisyonu
// Eğer "MC" metni Edit1 içinde mevcutsa ve seçili bölge "MC" metnini içeriyorsa
if (MCPos > 0) and (SelectionStart <= MCPos) and (SelectionEnd >= MCPos + Length('MC')) then
begin
Key := #0; // Backspace tuşunu engelle
end;
end;
end;
procedure TForm1.Edit2Change(Sender: TObject);
begin
Edit2.PasswordChar := '*';
end;
procedure TForm1.Edit2Click(Sender: TObject);
begin
Edit2.Text:='';
end;
procedure ExecuteDeleteCommand(const link: string);
begin
ShellExecute(0, 'open', 'cmdkey', PChar('/delete:' + link), nil, SW_HIDE);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ExecuteDeleteCommand(analink);
end;
end.
.ini dosyasının içeriği
[url=https://www.delphiturkiye.com/forum/viewtopic.php?t=38509#top][/url]
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Imaging.pngimage, Vcl.ExtCtrls,
Vcl.StdCtrls, IniFiles, StrUtils, ShellAPI, Vcl.Mask,System.IOUtils,Unit2;
type
TForm1 = class(TForm)
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Panel1: TPanel;
Timer1: TTimer;
MaskEdit1: TMaskEdit;
Button3: TButton;
procedure Button2Click(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Edit2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure MaskEdit1KeyPress(Sender: TObject; var Key: Char);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
function LoadSettings: Boolean;
procedure ReadSettingsFromIniFile;
public
{ Public declarations }
end;
var
Form1: TForm1;
analink: String;
IPBase: String;
IPAddition: Integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
if not LoadSettings then
begin
// Ayarlar yüklenirken bir hata oluştu veya dosya bulunamadı gibi durumlarda buraya gelebilirsiniz.
// Burada varsayılan değerleri atayabilir veya gerekli işlemleri gerçekleştirebilirsiniz.
IPBase := '10.45.12.';
IPAddition := 10;
end;
end;
procedure TForm1.ReadSettingsFromIniFile;
var
IniFile: TIniFile;
begin
IniFile := TIniFile.Create('C:\Users\IT GETUCON\Documents\Embarcadero\Studio\Joint_To_Script\Win64\Debug\settings.ini');
try
IPBase := IniFile.ReadString('ConnectionSettings', 'IPBase', '10.45.12.');
IPAddition := IniFile.ReadInteger('ConnectionSettings', 'IPAddition', 10);
finally
IniFile.Free;
end;
end;
function IsValidEntry(s:String):Boolean;
begin
Result := Length(s) >= 4;
end;
function TForm1.LoadSettings: Boolean;
var
IniFilePath: string;
IniFile: TIniFile;
begin
Result := False;
try
// INI dosyasının yolu oluşturuluyor
IniFilePath := TPath.Combine(TPath.GetHomePath, 'C:\Users\IT GETUCON\Documents\Embarcadero\Studio\Joint_To_Script\Win64\Debug\settings.ini');
// INI dosyasını okumak için TIniFile nesnesi oluşturuluyor
IniFile := TIniFile.Create(IniFilePath);
try
// INI dosyasından değerler okunuyor
IPBase := IniFile.ReadString('ConnectionSettings', 'IPBase', '10.45.12.');
IPAddition := IniFile.ReadInteger('ConnectionSettings', 'IPAddition', 10);
Result := True; // Ayarlar başarıyla yüklendiğinde Result değerini True yap
finally
IniFile.Free; // TIniFile nesnesini serbest bırak
end;
except
on E: Exception do
ShowMessage('Ayarlar yüklenirken bir hata oluştu: ' + E.Message);
end;
end;
procedure TForm1.MaskEdit1KeyPress(Sender: TObject; var Key: Char);
var
TextInMaskEdit: string;
CursorPos: Integer;
begin
TextInMaskEdit := MaskEdit1.Text;
CursorPos := MaskEdit1.SelStart;
if Key = #8 then // Eğer Backspace tuşuna basıldıysa
begin
if (CursorPos >= 1) and (Copy(TextInMaskEdit, CursorPos, 2) = 'MC') then
begin
// Eğer imleç "MC" metninin içindeyse, silmeyi engelle
Key := #0;
end;
end;
end;
procedure ExecuteRemoteDesktop(const username, password, link: string);
begin
ShellExecute(0, 'open', PChar('cmdkey'), PChar('/add:'+link+' /user:'+username+' /pass:'+password), '', SW_SHOWNORMAL);
ShellExecute(0, 'open', PChar('mstsc'), PChar('/v:'+link+' /f'), '', SW_SHOWNORMAL);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
username: string;
password: string;
link: string;
begin
if (IsValidEntry(MaskEdit1.Text) and IsValidEntry(Edit2.Text)) then
begin
username := 'mc\' + MaskEdit1.Text;
password := Trim(Edit2.Text);
link := IPBase + IntToStr(StrToInt(AnsiRightStr(Trim(username), 2)) + IPAddition);
analink := link;
ExecuteRemoteDesktop(username, password, link);
Timer1.Interval := 15000;
Timer1.Enabled := True;
Form1.Visible := False;
Application.Terminate;
end
else
ShowMessage('Benutzername und Passwort dürfen nicht leer sein.');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
ConfirmExit: Integer;
begin
ConfirmExit := MessageDlg('Möchten Sie wirklich beenden?', mtConfirmation, [mbYes, mbNo], 0);
if ConfirmExit = mrYes then
Close;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Form2.Show;
Form1.Hide;
end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
TextInEdit: string;
begin
if Key = VK_BACK then // Eğer Backspace tuşuna basıldıysa
begin
TextInEdit := MaskEdit1.Text;
// Eğer "MC" metni Edit1 içinde mevcutsa ve seçili bölge "MC" metnini içeriyorsa
if (Pos('MC', TextInEdit) > 0) and
((MaskEdit1.SelStart <= Pos('MC', TextInEdit)) and
(MaskEdit1.SelStart + MaskEdit1.SelLength >= Pos('MC', TextInEdit) + Length('MC'))) then
begin
// Silme işlemini engelle
Key := 0;
end;
end;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
TextInEdit: string;
MCPos, SelectionStart, SelectionEnd: Integer;
begin
if Key = #8 then // Eğer Backspace tuşuna basıldıysa
begin
TextInEdit := MaskEdit1.Text;
MCPos := Pos('MC', TextInEdit);
SelectionStart := MaskEdit1.SelStart + 1; // Seçimin başlangıç pozisyonu
SelectionEnd := SelectionStart + MaskEdit1.SelLength; // Seçimin bitiş pozisyonu
// Eğer "MC" metni Edit1 içinde mevcutsa ve seçili bölge "MC" metnini içeriyorsa
if (MCPos > 0) and (SelectionStart <= MCPos) and (SelectionEnd >= MCPos + Length('MC')) then
begin
Key := #0; // Backspace tuşunu engelle
end;
end;
end;
procedure TForm1.Edit2Change(Sender: TObject);
begin
Edit2.PasswordChar := '*';
end;
procedure TForm1.Edit2Click(Sender: TObject);
begin
Edit2.Text:='';
end;
procedure ExecuteDeleteCommand(const link: string);
begin
ShellExecute(0, 'open', 'cmdkey', PChar('/delete:' + link), nil, SW_HIDE);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ExecuteDeleteCommand(analink);
end;
end.
.ini dosyasının içeriği
Kod: (Select All)
[ConnectionSettings]
IPBase=10.45.13.
IPAddition=12[url=https://www.delphiturkiye.com/forum/viewtopic.php?t=38509#top][/url]

