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

Тема в разделе "Delphi - Система", создана пользователем dima_lamo, 8 янв 2008.

Статус темы:
Закрыта.
  1. dima_lamo

    dima_lamo Гость

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

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

    ***text1***

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

    ***end***

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



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

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


    Жду помощи
     
  2. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    <!--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 ( помоему у него итемсы )
     
  3. dima_lamo

    dima_lamo Гость

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

    Заранее благодарен
     
  4. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
  5. dima_lamo

    dima_lamo Гость

    Ок, спс
     
  6. dima_lamo

    dima_lamo Гость

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

    1. file.txt
    2. info.txt

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

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

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


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

    dima_lamo Гость

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

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

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

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

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

    dima_lamo Гость

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

    root Гость

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

    end;

    end;
    для поиска блоков можно использовать RichEdit1.FindText() которая возвращает позиции найденых параметров
    пример из хелпа
    Код (Text):
    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;
     
  10. root

    root Гость

    Кстати товарисчи программисты перавый раз солкнулся с абстрактными классами я бы хотел у вас уточнить. Тоесть в абстрактных классах определенные методы реализуются только в потомках этого класса ? Тому пример Tstring метод Loadfromfile опсан в tstring а реализован в потомке TStringList.
     
  11. dima_lamo

    dima_lamo Гость

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

    а за поиск спс!
     
  12. dima_lamo

    dima_lamo Гость

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

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

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

    Пример:

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

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

    dima_lamo Гость

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

    Помет пример кода выложите? (к моему случаю)
     
  14. root

    root Гость

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

    root Гость

  16. dima_lamo

    dima_lamo Гость

    Всем спс за помощь! Ща пошол разбиратся
     
  17. 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 цыфер

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

    dima_lamo Гость

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

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

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

    Желательно с примером
     
  19. root

    root Гость

    Для: dima_lamo
    код с пометкой в какой строке шибка.
     
  20. dima_lamo

    dima_lamo Гость

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

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


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

Поделиться этой страницей