![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Всем доброго времени суток. Имеется проблема, которую не могу решить уже несколько дней. Есть текстовой файл с данными такого вида:
Код:
stroka1 stroka2 stroka3 stroka4 Последний раз редактировалось babay89, 20.09.2011 в 13:17. |
|
#2
|
||||
|
||||
|
несколько непонятно по вашему примеру, что является разделителем строк?
Если пробел, то это не 4 строки, а одна длинная. Непонятно так-же что собственно парсить? Получить на выходе 4 слова или нечто другое? |
|
#3
|
|||
|
|||
|
Да, разделитель пробел, нужно как-то спарсить через пробел эти данные.
|
|
#4
|
||||
|
||||
|
Не уверен что это то что вы хотите, но видимо так:
Код:
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
|
|||
|
|||
|
Почти оно, но мне нужно не количество строк, а сами строки
![]() |
|
#6
|
|||
|
|||
|
возможно ли вообще такое запилить на delphi??? На с++ видел такое.
|
|
#7
|
|||
|
|||
|
SL.strings[1]
вобще http://www.google.ru/search?q=delphi+split |
|
#8
|
|||
|
|||
|
Цитата:
|
|
#9
|
||||
|
||||
|
Цитата:
|
|
#10
|
|||
|
|||
|
Цитата:
|
|
#11
|
|||
|
|||
|
Цитата:
|
|
#12
|
||||
|
||||
|
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
|
||||
|
||||
|
набирал на коленках, так что могут быть недочеты
Код:
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; |
|
#14
|
|||
|
|||
|
вот еще одно из множества решений
Но здесь нет защиты от двойного пробела! Если это критично- пиши. добавлю а вообще- то совсем недавно уже была переписка по этому вопросу. Поройся в форуме. Код:
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
|
|||
|
|||
|
Спасибо всем за помощь
|