Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Вниз

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

 
Федюлин Григорий ©   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.049 c
1-1105157951
Progh
2005-01-08 07:19
2005.01.23
Указатели


14-1104481804
BJValentine
2004-12-31 11:30
2005.01.23
Восстановление bkf архива


9-1097644767
RRAIN
2004-10-13 09:19
2005.01.23
Поворот всей сцены в текущей позиции на Delphi


14-1105167737
Девушка
2005-01-08 10:02
2005.01.23
Вспоминая ветку про шлейфы на IXBT


1-1104923290
t4
2005-01-05 14:08
2005.01.23
Расщепление строки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский