Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.23;
Скачать: CL | DM;

Вниз

Парсинг строки   Найти похожие ветки 

 
Федюлин Григорий ©   (2005-01-04 12:45) [0]

Имеется текстовой файл, в котором хранятся данный таким образом:
aaa aaa aaa
Как можно поместить каждую aaa в отдельную переменную?


 
begin...end ©   (2005-01-04 12:48) [1]

> Федюлин Григорий ©   (04.01.05 12:45)

Можно сделать самому (обычный цикл), а можно воспользоваться TStringList (Delimiter, DelimitedText).


 
MBo ©   (2005-01-04 12:49) [2]

1. Читать с помощью Read
2. TStringList.CommaText использовать в применении к каждой строке


 
TUser ©   (2005-01-04 13:07) [3]

var aaas: array of string;
   f: textfile;
   i: integer;
   s, buf: string;    
begin
SetLength(aaas,0);
assignfile(f,filename);
reset(f);
while not eof(f) do begin
readln(f,s);
s:=s+" ";
i:=1; buf:="";
while i <= length (s) do begin
if s[i] = "" then begin
SetLength(aaas,length(aaas)+1);
aaas[length(aaas)-1]:=buf;
buf:="";
end else
buf:=buf+s[i];
inc (i);
end;
end;
end;


 
Anatoly Podgoretsky ©   (2005-01-04 13:08) [4]

Copy + Pos + Delete


 
begin...end ©   (2005-01-04 13:24) [5]

> Федюлин Григорий

var
 Str: String;
 Arr: array of String;
 I: Integer;

begin
 // Читаем в строку S содержимое файла
 SetLength(Arr, 1);
 for I := 1 to Length(Str) do
   if Str[I] = " " then
   begin
     SetLength(Arr, Length(Arr) + 1);
     Arr[High(Arr)] := EmptyStr
   end
   else
     Arr[High(Arr)] := Arr[High(Arr)] + Str[I]
end.


 
Экспериментатор   (2005-01-05 10:59) [6]

если использовать RX Library, то
в модуле rxStrUtils есть полезные функции
WordPosition WordCount ExtractWord ExtractWordPos
как раз для таких случаев


 
Федюлин Григорий ©   (2005-01-05 13:31) [7]

Уважаемые мастера, как можно помещать каждое aaa на одной строке в отдельную переменную, используя Delimiter? На второй, третьей и т.д. строке данные aaa перезаписывают старые данные в соответсвующих переменных. Спасибо!


 
KSergey ©   (2005-01-05 13:34) [8]

> 7] Федюлин Григорий ©   (05.01.05 13:31)
> Уважаемые мастера, как можно помещать каждое aaa на одной
> строке в отдельную переменную

См. TStringList.Items[]


 
Федюлин Григорий ©   (2005-01-06 11:58) [9]

Пожалуйста поместите програмный код, а то я в работе со строками на програмном уровне не очень...


 
begin...end ©   (2005-01-06 12:13) [10]

> Федюлин Григорий ©   (06.01.05 11:58) [9]

Куда поместить-то? Здесь уже поместили. Куда ещё?

"Ахринеть!" (© не помню чей)


 
Fay ©   (2005-01-06 12:14) [11]

2 Anatoly Podgoretsky © (04.01.05 13:08) [4]
>> Copy + Pos + Delete
Это будет ужасно.


 
Федюлин Григорий ©   (2005-01-06 13:14) [12]

Sorry, это я к KSergey обращался.


 
KSergey ©   (2005-01-06 14:05) [13]

Я фигею дорогая редакция....

> [8] KSergey ©   (05.01.05 13:34)
> См. TStringList.Items[]
>  [9] Федюлин Григорий ©   (06.01.05 11:58)
> Пожалуйста поместите програмный код,

s1, s2, s3: String;

s1 := StrList.Items[0];
s2 := StrList.Items[1];
s3 := StrList.Items[2];

Так лучше?


 
Anatoly Podgoretsky ©   (2005-01-06 14:22) [14]

Fay ©   (06.01.05 12:14) [11]
Речь не об ужасе, кроме того TStringList точно такой же ужас с ресурсами, скоростью, объемом и сложностью кода. Вопрос то о путям выполнения задачи - это один из путей. А количество путей выполнения данной задачи множество.


 
Anatoly Podgoretsky ©   (2005-01-06 14:24) [15]

Неплохим варианто будет использование функции, возвращающей очередное слово. При этом можно обойтись без delete, что сильно ускорит и уменьшит расход памяти.


 
Экспериментатор   (2005-01-06 21:04) [16]

IMHO RxLibrary с функциями WordPosition ExtractWord и другими
РУЛИТ
Прошу обратить внимание на DBGridEh
сохранение и восстановление настроек колонок и других параметров производится с использованием функций уж очень похожих на те которые указаны выше (и наименование то же практически)


 
Гриня   (2005-01-07 09:48) [17]

Уважаемые господа!!!
А что делать если ааа на русском языке и в Делфях они отображаются знаками вопроса(???)


 
begin...end ©   (2005-01-07 11:24) [18]

> [17] Гриня   (07.01.05 09:48)

Сменить шрифт в редакторе кода?


 
Erik1 ©   (2005-01-07 11:57) [19]

function ListStr(const S, Separator: string; i: Integer = 0): TStrings;
var
 Posit, Size: Integer;
 Buf: String;
begin
 Posit := 1;
 Result := TStringList.Create;
 
 while (Posit > 0) do
 begin
   Posit := TailPos(S, Separator, i+1);
   if Posit = 0 then
     Size := Length(S)
   else
     Size := Posit-i-1;
     
   Buf := Trim(Copy(S, i+1, Size));
   i := Posit;
   if Buf <> "" then
     Result.Add(Buf);
 end;  
end;
Фуикцию TailPos можно скачать из инета. http://delphibase.endimus.ru/?action=viewfunc&topic=strsearch&id=10271


 
begin...end ©   (2005-01-07 12:07) [20]

> [19] Erik1 ©   (07.01.05 11:57)

А нужно ли это, если как раз у TStrings имеются свойства Delimiter и DelimitedText?



Страницы: 1 вся ветка

Текущий архив: 2005.01.23;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.024 c
1-1105465566
Igor_thief
2005-01-11 20:46
2005.01.23
Как лучше?


9-1097322125
Delphis
2004-10-09 15:42
2005.01.23
На весь экран


1-1105369834
DK
2005-01-10 18:10
2005.01.23
Как остановить выполнение метода


4-1102093835
кактусбел
2004-12-03 20:10
2005.01.23
Поиск фаила в каталоге и его подкаталогах


11-1087303348
paulgl
2004-06-15 16:42
2005.01.23
Обработка событий компонента