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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.09.2011, 13:11
babay89 babay89 вне форума
Прохожий
 
Регистрация: 20.09.2011
Сообщения: 39
Репутация: -2571
По умолчанию Чтение данных в текстовом файле

Всем доброго времени суток. Имеется проблема, которую не могу решить уже несколько дней. Есть текстовой файл с данными такого вида:
Код:
stroka1 stroka2 stroka3 stroka4
Нужно Спарсить все четыре эти строки. Кто поможет с решением?

Последний раз редактировалось babay89, 20.09.2011 в 13:17.
Ответить с цитированием
  #2  
Старый 20.09.2011, 13:22
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

несколько непонятно по вашему примеру, что является разделителем строк?
Если пробел, то это не 4 строки, а одна длинная.
Непонятно так-же что собственно парсить? Получить на выходе 4 слова или нечто другое?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 20.09.2011, 13:28
babay89 babay89 вне форума
Прохожий
 
Регистрация: 20.09.2011
Сообщения: 39
Репутация: -2571
По умолчанию

Да, разделитель пробел, нужно как-то спарсить через пробел эти данные.
Ответить с цитированием
  #4  
Старый 20.09.2011, 13:41
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Не уверен что это то что вы хотите, но видимо так:
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils, Classes, Dialogs;
Var
  SL: TStringList;
begin
 SL := TStringList.Create;
 SL.LoadFromFile('c:\1\test.txt');
 SL.Text := StringReplace(SL.Text,#32,#13,[rfReplaceAll]);
 ShowMessage(IntToStr(SL.Count));
 SL.Free;
end.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 20.09.2011, 13:48
babay89 babay89 вне форума
Прохожий
 
Регистрация: 20.09.2011
Сообщения: 39
Репутация: -2571
По умолчанию

Почти оно, но мне нужно не количество строк, а сами строки
Ответить с цитированием
  #6  
Старый 20.09.2011, 14:00
babay89 babay89 вне форума
Прохожий
 
Регистрация: 20.09.2011
Сообщения: 39
Репутация: -2571
По умолчанию

возможно ли вообще такое запилить на delphi??? На с++ видел такое.
Ответить с цитированием
  #7  
Старый 20.09.2011, 14:47
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

SL.strings[1]
вобще http://www.google.ru/search?q=delphi+split
Ответить с цитированием
  #8  
Старый 20.09.2011, 15:13
babay89 babay89 вне форума
Прохожий
 
Регистрация: 20.09.2011
Сообщения: 39
Репутация: -2571
По умолчанию

Цитата:
Сообщение от Pyro
я так понимаю они делят строку на несколько строк, что не есть гуд.
Ответить с цитированием
  #9  
Старый 20.09.2011, 16:04
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Цитата:
Сообщение от babay89
я так понимаю они делят строку на несколько строк, что не есть гуд.
Ставьте точно задачу, что вы хотите сделать и желательно с примером.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #10  
Старый 20.09.2011, 16:33
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

Цитата:
Сообщение от babay89
на несколько строк, что не есть гуд.
экий вы эстет
Ответить с цитированием
  #11  
Старый 20.09.2011, 16:38
babay89 babay89 вне форума
Прохожий
 
Регистрация: 20.09.2011
Сообщения: 39
Репутация: -2571
По умолчанию

Цитата:
Сообщение от Страдалецъ
Ставьте точно задачу, что вы хотите сделать и желательно с примером.
ну я уже не знаю как точнее. Нужно прочитать данные из текстового файла,в котором лежит строка с данными nick pass server, так вот нужно спарсить эти ник, пасс и сервер. Точнее уже не могу объяснить.
Ответить с цитированием
  #12  
Старый 20.09.2011, 17:02
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Let me show you:
Код:
procedure ParseTextFile(const FileName: String; var UserName, UserPass, Server: String);
var
  AStrings: TStrings;
begin
  AStrings:=TStringList.Create;
  try
    AStrings.LoadFromFile(FileName);
    AStrings.Text:=StringReplace(AStrings.Text, ' ', #13#10, [rfReplaceAll, rfIgnoreCase]);
    UserName:=AStrings[0];
    UserPass:=AStrings[1];
    Server:=AStrings[2];
  finally
    AStrings.Free;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  UserName, UserPass, Server: String;
begin
  ParseTextFile('txtfile.txt', UserName, UserPass, Server);
  Edit1.Text:=UserName;
  Edit2.Text:=UserPass;
  Edit3.Text:=Server;
end;

http://data.cod.ru/124709
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #13  
Старый 20.09.2011, 17:10
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

набирал на коленках, так что могут быть недочеты
Код:
var 
TextFile:Tstringlist;
TS:Tstringlist;
i:integer;
log,pas,serv:string;

begin
TextFile:=Tstringlist.create;
TextFile.loadfromfile('c:\temp\1.txt'); //файл с данными, в формате: log pas serv
TS:=Tstringlist.create;

TS.Delimiter := ' ';
TS.DelimitedText := TextFile.text;


log:=TS.Strings[0];
pas:=TS.Strings[1];
serv:=TS.Strings[2];

FreeAndNil(TS);
FreeAndNil(TextFile);

end;
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием
  #14  
Старый 20.09.2011, 18:52
chainik chainik вне форума
Начинающий
 
Регистрация: 30.06.2008
Сообщения: 140
Репутация: 8882
По умолчанию

вот еще одно из множества решений
Но здесь нет защиты от двойного пробела!
Если это критично- пиши. добавлю
а вообще- то совсем недавно уже была переписка по этому вопросу.
Поройся в форуме.
Код:
var
ss:array[0..2] of string;

procedure SplitStr(s:string;Term:char);
var
N,i:integer;
begin
for i:=Low(ss) to High(ss) do ss[i]:='';
N:=Low(ss);
i:=1;
while (i<= Length(s)) and (N <=High(ss)) do
    begin
    if s[i]=Term then inc(N)
    else ss[N]:=ss[N]+s[i];
    inc(i);
    end;
end;
Ответить с цитированием
  #15  
Старый 20.09.2011, 19:24
babay89 babay89 вне форума
Прохожий
 
Регистрация: 20.09.2011
Сообщения: 39
Репутация: -2571
По умолчанию

Спасибо всем за помощь
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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