Форум: "Основная";
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];
ВнизКак считать символы в memo после Найти похожие ветки
← →
Ирина (2002-03-18 11:25) [0]Здраствуйте уважаемые, не могли бы Вы подсказать как можно считать в переменную все слова и тэги, находящиеся в memo после символа "#". Заранее благодарна.
← →
Виктор Щербаков (2002-03-18 11:30) [1]Copy(Memo1.Text, Pos("#", Memo1.Text) + 1, Length(Memo1.Text));
← →
Song (2002-03-18 12:44) [2]2Виктор Щербаков © (18.03.02 11:30)
Copy(Memo1.Text, Pos("#", Memo1.Text) + 1, Length(Memo1.Text) -Pos("#", Memo1.Text));
← →
Ирина (2002-03-18 12:44) [3]Делаю вот так :
var
f: textfile;
s: string;
begin
AssignFile(f,"text.txt");
Reset(f);
while not eof(f) do
begin
readln(f,s);
S := Copy(S, Pos("#", S) + 1, Length(S));
memo2.Text:= s;
В случае если в текстовом файле text.txt несколько строк после символа # он показывает только последний из них, а все предудущие теряет, в чем тут дело?
← →
Song (2002-03-18 12:48) [4]2Ирина
1. Исправьте как я уточнил выше.
2. Не пойму как это "если несколько строк после символа #"? Ведь Вы считываете в S всего лишь одну строку.
← →
gek (2002-03-18 12:49) [5]
readln(f,s);
i:=Pos("#", S);
if i <> 0 then
S := Copy(S, i + 1, (Length(S) - i));
memo2.lines.add(s);
← →
Виктор Щербаков (2002-03-18 12:52) [6]Song © (18.03.02 12:48)
function Copy(S; Index, Count: Integer): string;
...
If Count specifies more characters or array elements than are available, only the characters or elements from S[Index] to the end of S are returned.
← →
MBo (2002-03-18 12:55) [7]вместо memo2.Text:= s; - это каждый раз замена всего
надо memo2.lines.add(s);
copy c излишней длиной работает, хотя и смотрится сомнительно.
бывает полезно.
← →
Song (2002-03-18 13:03) [8]2Виктор Щербаков © (18.03.02 12:52)
В принципе Вы правы конечно, но так программисты не поступают. Во всём нужен порядок. Лучше сделать красивей, чем уповать на такие правила, ИМХО конечно.
← →
Ирина (2002-03-18 19:10) [9]Господи, сколько же тут тонкостей :( если текст расположен в txt файле таким образом:
привет#пока
то отлично работает вот этот код:
readln(f,s);
i:=Pos("#", S);
if i <> 0 then
S := Copy(S, i + 1, (Length(S) - i));
memo1.lines.add(s);
Однако, если текст расположен вот так(именно мой вариант):
привет
#
пока
то код уже не работает, считываются символы находящиеся и до "#". Большая просьба все-таки помочь разобраться мне с этой проблемой.
← →
Anatoly Podgoretsky (2002-03-18 20:21) [10]
while not eof(f) do begin
readln(f,s);
if Pos("#", S) <> 0 then begin
S := Copy(S, Pos("#", S) + 1, Length(S));
memo1.lines.add(s);
Break;
end;
end;
while not eof(f) do
begin
readln(f,s);
memo1.lines.add(s);
end;
← →
Kornet (2002-03-19 07:37) [11]Могу предложить мой вариант реализации:
type TArrStr = array of string;
......
function explode(Separator:Char; Str:string):TArrStr;
var tmp:string;
marray:TArrStr;
size_array, len:integer;
begin
tmp:=Str;
size_array:=1;
while Pos(Separator, tmp) > 0 do
begin
len:=Pos(Separator, tmp);
SetLength(marray,size_array);
marray[size_array-1]:=TrimLeft(TrimRight(copy(tmp,1,len-1)));
tmp:=copy(tmp,len+1,Length(tmp)-len);
inc(Size_array);
end;
SetLength(marray,size_array);
marray[size_array-1]:=TrimLeft(TrimRight(tmp));
Result:=marray;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c