Форум: "Основная";
Текущий архив: 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