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

Вниз

Вопрос по строкам.   Найти похожие ветки 

 
qqqqq   (2003-05-24 22:11) [0]

Вобщем пытаюсь зделать програмку которая осуществяет поиск замену в файлах в указанном каталоге. Вот что сейчас имею ето стандартная форма на ней три Memo почему именно мемо а не едиты спросите вы дак в едиты много не влазит а мне надо текст кусками менять, вобщем собираюсь использовать стандартную процедуру поиска Pos, для етого все строки компонента мемо я загоняю в одну строку и там уже вышеупомянутой функцией ищу то что нужно, но вот проблема когда все строки копируются в одну то служебные символы оттуда убераютя соответственно указатель SelStart я немогу правильно выставить чтоб выделялось то что мне нужно вот не знаю как решить проблему. вот то что уже есть:
var
big, big1, big2 : string;
col, col1, col2 : integer;
i, i1, i2, start, finish : integer;
name_file : string;
rabota : integer;
f: TSearchRec;
find_f: string;
dlyaload: string;
begin
col := memo1.lines.count;
for i := 0 to col do big:= big + memo1.lines.strings[i];
col1 := memo2.lines.count;
for i1 := 0 to col1 do big1:= big1 + memo2.lines.strings[i1];
col2 := memo3.lines.count;
for i2 := 0 to col2 do big2:= big2 + memo2.lines.strings[i2];
start:=pos(big, big1);
finish := memo1.gettextlen;
memo2.setfocus;
memo2.selstart:= start - 1;
memo2.SelLength:= finish;
memo2.seltext:= memo3.text;
end;
ето пока без работы с файлами что посоветуете?


 
Song ©   (2003-05-24 22:20) [1]

Запятые расставь


 
andrey_pst ©   (2003-05-24 23:31) [2]

во, блин !
а на Perle-то не судьба написать ?


 
qqqqq   (2003-05-25 00:18) [3]

To: Song
Вощем общий вопрос такой как в одну строку добавить две строки со всеми служебными символами которые в них находятся? Переписывать ето все облом.
To: andrey_pst
Нет не судьба не знаю я перл я и делфи то только неделю назад к себе на ком поставил


 
jack128 ©   (2003-05-25 00:24) [4]


> Вощем общий вопрос такой как в одну строку добавить две
> строки со всеми служебными символами которые в них находятся?
>

также как если бы в строках не было служебных символов


 
qqqqq   (2003-05-25 00:40) [5]

Понимаеш тут смысл в чем что в зависимости от того что выдает функция Pos тоже самое будет и в инструкциях для SelStart тоисть начинать выделение текста с етого момента заканчивать выделение текста оно будет по инструкциям SelLenght а потом етот выделенный текст уже меняется на то на что необходимо его заменить из компонента мемо3, дак вот если поиск производить в одной длинной строке (без етих самых служебных символов) то указатель съезжает что естественно сказывается на том какой текст будет выделен. Вот я и спрашиваю как мне все вместе скопировать так как я делаю не получается, а делаю я так беру переменную присваиваю ей стринг а тотом по очереди добавляю туда строки из мемо. Не выходит если менять допусим из середины текста начиная со второй строги то выделение съезжает на 2 символа назад с 3 строки на 4 символа назад и т.д. вобщем не знаю что и делать


 
jack128 ©   (2003-05-25 00:47) [6]

qqqqq (25.05.03 00:40)
ничего не понял. Почему у тебя в
> одной длинной строке
теряются служебные символы??


 
qqqqq   (2003-05-25 00:51) [7]

так какжется я начинаю понимать я текст вместо того чтобы из переменной которую я создяю под мемо из которого буду менять что в нем находится на выделенный сразу беру текст из етого самого мемо наверное проблема тут счас попробую


 
qqqqq   (2003-05-25 01:02) [8]

тьфу блин скоко морочился я просто в номерации етих мемо ошибся из зи етого вся путаница, спасибо всем кто откликнулся тема закрыта если она вобще была открытой


 
Sha ©   (2003-05-25 10:29) [9]

Интересно было бы поговорить с автором :)


 
qqqqq   (2003-05-25 21:51) [10]

ты о чем?


 
Sha ©   (2003-05-25 22:33) [11]

О паузах между словами.
Любопытно бывает разбирать текст вообще без знаков препинания. Плюс к этому ты, кажется, решил отказаться от заглавных букв :)
По-моему, зря. Мне они помогают как-то структурировать мысли :)


 
qqqqq   (2003-05-25 23:46) [12]

А понял. Там кстати насчет того что я перепутал номерацию мемо и то что я потом зделал правильно ето все равно не решило проблему, тоисть всетаки кудато служебные символы уходят. Я пробовал большую строку просто в мемо вывести так и есть там где должны быть переходы на другую строку их нет, из-за етого весь текст становится одной длинной строкой вот может ктото всетаки покскажет как их грамотно копировать без потери служ. символов. Большое спасибо надеюсь здесь все понятно.


 
Anatoly Podgoretsky ©   (2003-05-26 00:00) [13]

Это тяжелое дело расставить знаки препинания, а еще и заглавные буквы - это же совсем не посильно, это же какую голову надо иметь. Но насколько просто писать еще и без пробелов. Вот попробуем:

этотяжелоеделорасставитьзнакипрепинанияаещеизаглавныебуквыэтожесовсемнепосильноэтожекакуюголовунадоиметьнонасколькопростописатьещеибезпробелов



 
Sha ©   (2003-05-26 01:05) [14]

насчет того что ты перепутал нумерацию мемо и то что потом все сделал правильно я понял служебные символы пропадают потому что ты склеиваешь в большую строку строки из мемо в которых нет служебных символов поэтому если ты хочешь их там оставить то проще всего пользоваться свойством текст или самому их приклеивать в большую строку между маленькими а потом просто в мемо вывести теперь конкретно насчет твоего вопроса если я правильно тебя понял то все что тебе требуется для того чтобы текст не становился одной длинной строкой это вставить в свою прогу для преобразования мемо в строку оператор s:=Memo1.Text; а для обратного преобразования поставь такой оператор Memo1.Text:=s; при этом служебные символы не должны потеряться желаю удачи АП не прав было трудно наверно потому что пробелы ставил


 
qqqqq   (2003-05-26 10:15) [15]

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


 
Smithson ©   (2003-05-26 10:26) [16]

Memo1.Text + F1


 
qqqqq   (2003-05-26 10:31) [17]

To: Smithson
Извини можеш немного поподробнее?


 
Amoeba   (2003-05-26 10:33) [18]

> qqqqq (26.05.03 10:15)
> Понимаеш если сделать так как ты говориш тоисть присвоить
> переменной весь текст мемо, то функция Pos найти в нем ничего
> не сможет поскольку работает только со строками.

Св-во Memo.Text как раз имеет тип String, и переменная того же типа. Так почему же функция Pos (работающая только со строками) не будет осуществлять поиск в строке?


 
qqqqq   (2003-05-26 10:41) [19]

Нет ту т мне кажется если не ошибаюсь мемо ето массив строк. Прога которая мне нужна она имеет три мемо, 1 - это текст который надо найти, 2- это текст на который нужно заменять, 3 - ето сам в текст в котором происходят все действия, именно мемо я выбрал потому что мне нужно менять текст большими кусками, тоисть допустим 3 строки сразу. Афункция Пос при таком раскладе Memo1.text выдает ошибку типа (Incompatible types "String" and "TString")


 
Sha ©   (2003-05-26 11:58) [20]

ну так надо посом искать не в мемо.текст а в строке куда сначала надо этот текст загнать


 
qqqqq   (2003-05-26 17:29) [21]

Вот правильно так сделать я и хотел, только вот когда ты все строки лепиш по очереди в одну, то из нее уходят символ переходи и символ возврата каретки, яуже в принципе как ето решить знаю осталось только попробовать счас под рукой компа просто с Делфой нет
col := memo1.lines.count;
for i := 0 to col do big:= big + memo1.lines.strings[i]+ chr(13)+chr(10); вот попробую может сработает


 
qqqqq   (2003-05-26 17:35) [22]

только в мемо.текст оно без проблем строку ищет, а вот кусок текста никак поетому и понадобилась необходимость все в одну строку лепить. Тоисть поподробнее:

f:= memo1.text;
d:= memo2.tetx;
pos(f, d);
непойдет поскольку f должна быть строкой


 
Sha ©   (2003-05-26 17:55) [23]

а кто у тебя d и f если не строки то не пройдут два присваивания перед пос а если строки то и пос должна работать


 
qqqqq   (2003-05-26 18:20) [24]

если есть желание то попробуй кинь два мемо на форму, кнопку, и edit.На онклик кнопки запиши такое:

f, d, g: string;
h: integer;
begin
f:= memo1.text;
d:= memo2.text;
h:= pos(f, d);
g:= floattostr(h);
edit1.text:= g;
тут если что не то там поправь точно не помню какой тип поса, но ето не столь важно мемо там на всякий случай(а вдруг получится) и end; еще в конце



 
qqqqq   (2003-05-26 18:44) [25]

тоисть на всякий случай там едит в которого выведется значение первого символа в D если получися конечно, у меня сейчас под рукой делфи нет просто


 
Sha ©   (2003-05-26 21:02) [26]

немного практики и все получится как у меня :)


 
qqqqq   (2003-05-26 23:54) [27]

что получилось а как у тебя получилось можеш расказать?


 
qqqqq   (2003-05-27 00:03) [28]

е мае и вправду получилось блин как долго я ето пытался зделать огромное тебе спасибо



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

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

Наверх




Память: 0.54 MB
Время: 0.021 c
3-13025
Юрий
2003-05-15 16:36
2003.06.05
Paradox на другой машине


1-13152
uchus
2003-05-26 12:06
2003.06.05
Dos команда...


1-13181
_sMile
2003-05-20 20:46
2003.06.05
Как отловить нажатие по элементу ListBox а?


1-13169
super_alex
2003-05-26 15:38
2003.06.05
Как очистить TPainBox


14-13372
rosl
2003-05-21 05:41
2003.06.05
скопировать или удалить файл