Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
.ini uzantısından ip ayarı çekmek
#1
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


[ConnectionSettings]
IPBase=10.45.13.
IPAddition=12


[url=https://www.delphiturkiye.com/forum/viewtopic.php?t=38509#top][/url]
Cevapla
#2
Selamlar,
Ne yapmak istediğinizi anlamadığım için yanıtlayamıyorum. Eğer daha açık anlatırsanız belki yanıt verebilirim.
Örneğin (12+10) diyorsunuz, 12 ini'den geliyor, tamam! Ama 10 nedir, ve nereden geiyor. Niçin 12 ile topluyorsunuz? Bir de program parçalarını program formatında yazarsanız gayet güzel olacaktır.
Cevapla
#3
Neden kulağı tersten tutuyorsunuz. Yazdiklarinizdan anladığım kadarıyla elinizde maskedit var ve buraya kullanıcıdan integer sayı verisi alacaksınız.

Baştaki sabit bilgiyi alıp sonuna da kullanıcıdan gelen bilgi + ini dosyadan gelen 10 sayısı.

Sabit bilgi için label veya readonly ikinci bir edit kullanın. Kullanıcı veri girişi için Edit yerine spinedit kullanın min Max limitleri girin tip olarak integer seçin. Value değeri size integer bilgiyi verir.

Sabit edit + (spin edit int + sabit ini int değeri)
String birleştirme tamamdır
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Bir Sitenin SSL sürelerini çekmek yhackup 6 1.105 17-10-2024, Saat: 20:19
Son Yorum: engerex
  Belirli sayıda kayıt çekmek cinarbil 2 959 17-05-2024, Saat: 08:35
Son Yorum: cinarbil
  Delphi ile Data Çekmek omerctlbs 2 1.548 29-04-2022, Saat: 11:10
Son Yorum: bydelphi
  Webden Bir Alandan Veri Çekmek akissoftware 19 12.886 05-12-2021, Saat: 22:05
Son Yorum: engerex
  Parmak izi okuyucudan veri çekmek ermanispir@gmail.com 15 13.357 30-11-2020, Saat: 09:26
Son Yorum: shooterman



Konuyu Okuyanlar: 1 Ziyaretçi