![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Всем привет. Подскажите пожалуйста как считать данные из txt которые ограничены пробелом
пример txt: Вася 123.123.123.123 Константин 14.14.13.13 И так далее.... я хочу сделать цикл что бы по нажатию одной кнопки из txt считывался ip и заносился в переменную далее делались процедуры и в конце опять возврат в начало цикла запись уже со второй строки второго ip и т д пока цикл не дойдёт до конца списка... Подскажи как считать со строчки данные после разделителя в данном случае пробел.. Чтение txt через TStringList. За ранее благодарен за любую подсказку. |
|
#2
|
|||
|
|||
|
Функция Pos спасет отца русской демократии.
Код:
var
Name : String;
IP : String;
Idx : Integer;
begin
...
S := StringList[i];
Idx := Pos(' ',S);
If Idx > 0 Then
Begin
Name := Copy(S,1,Idx-1);
IP := Copy(S,Idx+1,Length(S)-Idx+1);
...
End;
... |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
SkiHunter (30.07.2013)
| ||
|
#3
|
||||
|
||||
|
Цитата:
Просто надо грузить текст в DelimitedText. В итоге получите набор строк с ip в каждой строке. А если еще флаг на дубликаты врубить, то получите список уникальных ip. Вот примерчик: Код:
Var SL: TStringList; begin SL := TStringList.Create; SL.Delimiter := ' '; SL.Duplicates := dupIgnore; SL.Sorted := True; SL.DelimitedText := '1.1.1.1 1.1.1.2 1.1.1.3'#13'1.1.1.4 1.1.1.5 1.1.1.6 1.1.1.6'; Memo1.Lines := SL; end; Последний раз редактировалось Страдалецъ, 30.07.2013 в 12:23. |
| Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
SkiHunter (30.07.2013)
| ||
|
#4
|
|||
|
|||
|
Что то ни как не могу справиться с вашими подсказками....
Вот исходник моего клиента Код:
unit CliUnit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, StdCtrls, ComCtrls, ExtCtrls, Grids, Menus, XPMan;
type
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
StringGrid1: TStringGrid;
Button3: TButton;
PopupMenu1: TPopupMenu;
Rebott1: TMenuItem;
Shutdown1: TMenuItem;
Explorer1: TMenuItem;
KillIE1: TMenuItem;
XPManifest1: TXPManifest;
procedure ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
procedure FormCreate(Sender: TObject);
procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure ClientSocket1Write(Sender: TObject;
Socket: TCustomWinSocket);
procedure Rebott1Click(Sender: TObject);
procedure Shutdown1Click(Sender: TObject);
procedure Explorer1Click(Sender: TObject);
procedure KillIE1Click(Sender: TObject);
procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
constat:boolean = false;
t1:string; /// ip адрес
t2:string; /// команда
t3:string; /// переменная для цикла (IP)
sl:TStringList;
implementation
{$R *.dfm}
procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
ClientSocket1.Socket.SendText(t2);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
List:TStringList;
s,pole:string;
i:integer;
k:integer;
j:integer;
begin
sl:= TStringList.Create();
sl.LoadFromFile('ff.txt');
StringGrid1.Visible:=true;
stringgrid1.Cells[0,0]:='Terminal';
stringgrid1.Cells[1,0]:='IP';
stringgrid1.Cells[2,0]:='Status';
/////Загружаем в лист содержимое БД
List:=TStringList.Create;
List.LoadFromFile('ff.txt');
StringGrid1.RowCount:=List.Count+1;
/////Загружаем в стриг грид содержимое БД
for i:=1 to List.Count do begin
k:=0;
s:=List[i-1];
for j:=1 to length(s) do begin
if s[j]<>' ' then pole:=pole+s[j]
else begin stringGrid1.Cells[k,i]:=pole; pole:='';inc(k) end;
end;
end;
end;
/////////// Занести значение выделенной ячейки в t1////////
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
t1:=StringGrid1.Cells[ACol, ARow]
end;
/////////////////////////////////////////////////////////////
procedure TForm1.ClientSocket1Write(Sender: TObject;
Socket: TCustomWinSocket);
begin
ClientSocket1.Active:=false;
end;
procedure TForm1.Rebott1Click(Sender: TObject);
begin
t2:='start reboot.cmd';
ClientSocket1.Address:=t1;
ClientSocket1.Active:=true;
end;
procedure TForm1.Shutdown1Click(Sender: TObject);
begin
t2:='start poweroff.cmd';
ClientSocket1.Address:=t1;
ClientSocket1.Active:=true;
end;
procedure TForm1.Explorer1Click(Sender: TObject);
begin
t2:='start iexplore.exe';
ClientSocket1.Address:=t1;
ClientSocket1.Active:=true
end;
procedure TForm1.KillIE1Click(Sender: TObject);
begin
t2:='start taskkill /IM iexplore.exe /T /F';
ClientSocket1.Address:=t1;
ClientSocket1.Active:=true
end;
procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ShowMessage('Ничего страшного');
end;
end.Код:
Terminal1 192.168.0.1 Terminal2 192.168.0.2 Terminal3 192.168.0.3 Terminal4 192.168.0.4 Terminal5 192.168.0.5 Terminal11 192.168.0.11 Terminal12 192.168.0.12 Terminal13 192.168.0.13 Terminal14 192.168.0.14 Terminal15 192.168.0.15 Terminal16 192.168.0.16 Terminal17 192.168.0.17 Terminal18 192.168.0.18 |
|
#5
|
||||
|
||||
|
если есть возможность изменить текстовый файлик таким образом
Код:
Terminal1=192.168.0.1 Terminal2=192.168.0.2 Terminal3=192.168.0.3 ... |
|
#6
|
|||
|
|||
|
ну... если ты в коде сможешь исправить заполнение в стринг гриде то можно и равно поставить
|