• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

dima_lamo

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

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

***text1***

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

***end***

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



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

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


Жду помощи
 
M

morpheus

<!--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

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

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

morpheus

Всё делаеться просто, - этого более чем достаточно
 
D

dima_lamo

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

1. file.txt
2. info.txt

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

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

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


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

dima_lamo

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

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

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

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

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

dima_lamo

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

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;
 
R

root

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

dima_lamo

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

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

dima_lamo

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

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

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

Пример:

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

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

dima_lamo

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

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

root

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

root

sax_ol прав там проcто в uses нужно добавить
вот еще
 
D

dima_lamo

Всем спс за помощь! Ща пошол разбиратся
 
D

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 цыфер

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

dima_lamo

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

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

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

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

root

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

dima_lamo

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

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


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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!