Как сделать так, чтоб из файла делфи отобразил только нужную часть?

  • Автор темы dima_lamo
  • Дата начала
Статус
Закрыто для дальнейших ответов.
D

dima_lamo

#1
Тема такая:
Мне нужно чтоб моя программа, отобразила только определённую часть файла в компоненте.
Например компонент ListBox (как сделать чтоб слова автоматически переносились на новую строку?)

Пример: текстовый файл имеет такое содержание:

***text1***

Тут какой то текст... Вот его то и нужно отобразить

***end***

Задача сделать так, чтоб в компоненте ScrollBox отобразилось Только то, что находится между
"***text1***", и "***end***" ("***text1***", и "***end***" отоброжать не надо)



Вопрос номер 2.

Как сделать чтоб делфи отобразила в конпоненте Memo Все найденные строки, которые начинаются с
"***text"


Жду помощи
 

morpheus

скриптописец
07.08.2006
3 915
1
#2
<!--QuoteBegin-dima_lamo+7:01:2008, 23:57 -->
<span class="vbquote">(dima_lamo @ 7:01:2008, 23:57 )</span><!--QuoteEBegin-->Задача сделать так, чтоб в компоненте ScrollBox отобразилось Только то, что находится между
[snapback]92473" rel="nofollow" target="_blank[/snapback]​
[/quote]
На копочке прочитать содержимое текстового файла от "***text1***" до "***end***"
и вставить этот текст в ListBox.items ( помоему у него итемсы )
 
D

dima_lamo

#3
А теперь то же самое, тольео по русски, и желательно с ответом на второй поставленный вопрос...

Заранее благодарен
 
D

dima_lamo

#6
Вообщем есть 2 файла:

1. file.txt
2. info.txt

Необходимо сделать так, чтоб из первого файла во второй скопировались только строки, в которых есть следующие символы:
:
;

Я уже третий час мучаю себя и делфи, не как не могу это осуществить, прошу, приведите пример кода
(я даж тупо полный текст не могу скопировать из файла в файл,
точнее могу, но это мне нужно скопировать не из одного, а из нескольких файлов в один, а оно почемуто перезаписывает данные, удоляя старое)

Главное сделать так, чтоб из первого файла во второй скопировались только строки, в которых есть следующие символы:
:
;


Жду помощи, заранее Спасибо
 
D

dima_lamo

#7
Form1.Memo2.Lines.LoadFromFile(test.txt);

При загрузки более одного файла старое удоляется то, что было загружено от старого.

То есть при такой записи:

Form1.Memo2.Lines.LoadFromFile(test.txt);
Form1.Memo2.Lines.LoadFromFile(test1.txt);

Остаётся только содержимое файла test1.txt, как это исправить?
Точнее как сделать так, чтоб то что было загруженно из старого файла НЕ удолялось
 
D

dima_lamo

#8
Rfr сделать так, чтоб из первого файла во второй скопировались только те строки, в которых есть следующие символы:
:
;
 
R

root

#9
Для: dima_lamo
нужно использовать процедуру append или функцию add для lines
что то на подобе
Код:
var st:TStringList;
begin
st:=TStringList.Create;
try
st.LoadFromFile('c:\Readme.txt');
Memo1.Lines.Append(st.Text );
finally

end;

end;
для поиска блоков можно использовать RichEdit1.FindText() которая возвращает позиции найденых параметров
пример из хелпа
Код:
procedure TForm1.Button1Click(Sender: TObject);

begin
FindDialog1.Position := Point(RichEdit1.Left + RichEdit1.Width, RichEdit1.Top);
FindDialog1.Execute;
end;

procedure TForm1.FindDialog1Find(Sender: TObject);
var
FoundAt: LongInt;
StartPos, ToEnd: Integer;
begin
with RichEdit1 do
begin
{ begin the search after the current selection if there is one }
{ otherwise, begin at the start of the text }
if SelLength <> 0 then

StartPos := SelStart + SelLength
else

StartPos := 0;

{ ToEnd is the length from StartPos to the end of the text in the rich edit control }

ToEnd := Length(Text) - StartPos;

FoundAt := FindText(FindDialog1.FindText, StartPos, ToEnd, [stMatchCase]);
if FoundAt <> -1 then
begin
SetFocus;
SelStart := FoundAt;
SelLength := Length(FindDialog1.FindText);
end;
end;
end;
 
R
#10
Кстати товарисчи программисты перавый раз солкнулся с абстрактными классами я бы хотел у вас уточнить. Тоесть в абстрактных классах определенные методы реализуются только в потомках этого класса ? Тому пример Tstring метод Loadfromfile опсан в tstring а реализован в потомке TStringList.
 
D

dima_lamo

#11
root, + те! вот как сделать чот строки с символами:; записывались, я сам разобрался,

а за поиск спс!
 
D

dima_lamo

#12
И ещё вопросик

position := AnsiPos('1;', s);
if position = 0
then
else

Вот эта шняга ищет в стоке указанные мной символы, и если таковые есть, записывает строку, я не могу вкурить как сделать так, чтоб она искала переменные .
Например есть перемнная p типо целых чисел, и надо сделать так, чтоб прога записала только те строки, где есть целые числа
и надо при этом сделать чтоб например чтоб она искала на только числа, а например число;число:буква, ну и так далее

Пример:

Пусть в фаела много строк, в одной нам надо найти только те строки, в которыех есть такое содержимое:

(целое число)%(целое чисто)№(любая буква)
ну и так далее...
 
D

dima_lamo

#13
Чё не хочет работать по тому принцыпу...

Помет пример кода выложите? (к моему случаю)
 
R
#14
Для: dima_lamo
Почитай в интернете про регулярные выражения+ delphi
маска такая ('+' это хотябы один раз )
ExecRegExpr('[\d]+%[\d]+№([\w\d]+)+', Edit1.Text)
там еще разные методы есть жадный или не жадный
вот почитай
синтакси у них практический одинаковый
http://www.phpfaq.ru/regexp
 
D

dima_lamo

#17
Блин, чёт ни как не хочет работать...
Вот этот код я использую для поиска в строке:
var
s:string;
position : Integer;
degin
AssignFile(f, test.txt);
Reset(f);
while(Eof(f)=false)do
begin
readln(f,s);
position := AnsiPos('34052$, s);
if position = 0
then
else
тут функция записи в строку


Надо сделать так, чтоб записывались ВСЕ строки, где есть знак $, и перед ним 5 цыфер

Помогите плиз, я уже реально устал с этим куском кода мучатся!
 
D

dima_lamo

#18
С этим разобрался...

А теперь ещё один маленький вопросиГ

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

Желательно с примером
 
D

dima_lamo

#20
С этим я тожж разобрался, try expect end помогло,

А теперь ещё один вопросиГ (вот зас реально жду помощи, так как уже третий день не могу с этим раззобратся)


Как сделать так, чтоб прога всретив некорктный символ не вылетала с ошибкой, а тупо не записала эту строку и продолжида выполнения кода. try expect end в этом случае не работают
 
Статус
Закрыто для дальнейших ответов.