Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ] > Код на шару!
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.07.2013, 23:36
SkiHunter SkiHunter вне форума
Прохожий
 
Регистрация: 29.07.2013
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Считывание данных из txt

Всем привет. Подскажите пожалуйста как считать данные из txt которые ограничены пробелом
пример txt:
Вася 123.123.123.123
Константин 14.14.13.13
И так далее....
я хочу сделать цикл что бы по нажатию одной кнопки из txt считывался ip и заносился в переменную далее делались процедуры и в конце опять возврат в начало цикла запись уже со второй строки второго ip и т д пока цикл не дойдёт до конца списка...
Подскажи как считать со строчки данные после разделителя в данном случае пробел..
Чтение txt через TStringList.
За ранее благодарен за любую подсказку.
Ответить с цитированием
  #2  
Старый 30.07.2013, 05:43
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Функция 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  
Старый 30.07.2013, 12:15
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Цитата:
Функция Pos спасет отца русской демократии
Ну это вы погорячились. Автор использует TStringList и pos там совсем ни к чему.
Просто надо грузить текст в 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  
Старый 30.07.2013, 20:21
SkiHunter SkiHunter вне форума
Прохожий
 
Регистрация: 29.07.2013
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию что то не получается (((

Что то ни как не могу справиться с вашими подсказками....
Вот исходник моего клиента
Код:
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.
при запуске клиента он подгружает в стринг грид txt
Код:
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 
в первую колонку имена во вторую ip хочу сделать кнопку что бы по команде клиент отправлял команду на все ip которые в этом txt. попробовал ваши способы что то не помогает ((( подскажите ещё раз пожалуйста.
Ответить с цитированием
  #5  
Старый 30.07.2013, 22:22
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

если есть возможность изменить текстовый файлик таким образом
Код:
Terminal1=192.168.0.1
Terminal2=192.168.0.2
Terminal3=192.168.0.3
...
то, загрузив в TSTringList проще воспользоваться свойством Value или ValueFromIndex
__________________
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard
Ответить с цитированием
  #6  
Старый 30.07.2013, 23:05
SkiHunter SkiHunter вне форума
Прохожий
 
Регистрация: 29.07.2013
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

ну... если ты в коде сможешь исправить заполнение в стринг гриде то можно и равно поставить
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:32.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter