|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Считывание данных из txt
Всем привет. Подскажите пожалуйста как считать данные из 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 ... Понять, что хочет заказчик - бесценно, ведь он платит MasterCard |
#6
|
|||
|
|||
ну... если ты в коде сможешь исправить заполнение в стринг гриде то можно и равно поставить
|