Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как сделать так, чтоб из файла делфи отобразил только нужную часть?
Форум программистов > Системное программирование > Delphi и Pascal > Delphi - Система
dima_lamo
Тема такая:
Мне нужно чтоб моя программа, отобразила только определённую часть файла в компоненте.
Например компонент ListBox (как сделать чтоб слова автоматически переносились на новую строку?)

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

***text1***

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

***end***

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



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

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


Жду помощи
Morpheus
Цитата(dima_lamo @ 7:01:2008, 23:57 )
Задача сделать так, чтоб в компоненте ScrollBox отобразилось Только то, что находится между
*

На копочке прочитать содержимое текстового файла от "***text1***" до "***end***"
и вставить этот текст в ListBox.items ( помоему у него итемсы )
dima_lamo
А теперь то же самое, тольео по русски, и желательно с ответом на второй поставленный вопрос...

Заранее благодарен
Morpheus
Всё делаеться просто, ]]>здесь описаы примеры работы со строками]]> - этого более чем достаточно
dima_lamo
Ок, спс
dima_lamo
Вообщем есть 2 файла:

1. file.txt
2. info.txt

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

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

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


Жду помощи, заранее Спасибо
dima_lamo
Form1.Memo2.Lines.LoadFromFile(test.txt);

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

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

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

Остаётся только содержимое файла test1.txt, как это исправить?
Точнее как сделать так, чтоб то что было загруженно из старого файла НЕ удолялось
dima_lamo
Rfr сделать так, чтоб из первого файла во второй скопировались только те строки, в которых есть следующие символы:
:
;
root
Для: 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;
root
Кстати товарисчи программисты перавый раз солкнулся с абстрактными классами я бы хотел у вас уточнить. Тоесть в абстрактных классах определенные методы реализуются только в потомках этого класса ? Тому пример Tstring метод Loadfromfile опсан в tstring а реализован в потомке TStringList.
sax_ol
Для: root
]]>http://rsdn.ru/article/Delphi/delphiabs.xml]]>
dima_lamo
root, + те! вот как сделать чот строки с символами:; записывались, я сам разобрался,

а за поиск спс!
dima_lamo
И ещё вопросик

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

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

Пример:

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

(целое число)%(целое чисто)№(любая буква)
ну и так далее...
sax_ol
Для: dima_lamo
]]>http://www.latiumsoftware.com/en/articles/00009.php]]>
dima_lamo
Чё не хочет работать по тому принцыпу...

Помет пример кода выложите? (к моему случаю)
root
Для: dima_lamo
Почитай в интернете про регулярные выражения+ delphi
маска такая ('+' это хотябы один раз )
ExecRegExpr('[\d]+%[\d]+№([\w\d]+)+', Edit1.Text)
там еще разные методы есть жадный или не жадный
вот почитай
синтакси у них практический одинаковый
]]>http://www.phpfaq.ru/regexp]]>
sax_ol
Цитата(dima_lamo @ 9:01:2008, 18:58 )
Чё не хочет работать по тому принцыпу...

А вы что, просто скопипастили? Неа, так не будет, там надо еще библиотечку скачать, потом установить ее, подключить, подсоединить, воткнуть, .. вот тогда и заработает, я думаю мин за пять можно справиться.smile.gif
root
sax_ol прав там проcто в uses нужно добавить
вот еще ]]>http://www.delphikingdom.com/asp/viewitem.asp?catalogid=163]]>
dima_lamo
Всем спс за помощь! Ща пошол разбиратся
dima_lamo
Блин, чёт ни как не хочет работать...
Вот этот код я использую для поиска в строке:
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 цыфер

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

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

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

Желательно с примером
root
Для: dima_lamo
код с пометкой в какой строке шибка.
dima_lamo
С этим я тожж разобрался, try expect end помогло,

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


Как сделать так, чтоб прога всретив некорктный символ не вылетала с ошибкой, а тупо не записала эту строку и продолжида выполнения кода. try expect end в этом случае не работают
sax_ol
Для: dima_lamo
Вы покажите код, символ и ошибку, а то гадать долго будем.
dima_lamo
Мне нужно чтоб чтоб вместо перехода на новую строку записывался символ 'h'
Замену символов я делаю этим кодом:
s:= ReplaceSub(s,'0','b');
Подскажите что прописать чтоб вместо перехода на новую строку. был символ h
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.