Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проверка строк и заполнение stringgrida

1.9K
20 февраля 2008 года
Cool Xacker
148 / / 06.06.2006
Вообщем дело вот в чём:
имеется текстовый файл с таким текстом:
Цитата:
Opera Hotlist version 2.0
Options: encoding = utf8, version=3

#FOLDER
ID=12
NAME=Opera
ON PERSONALBAR=YES
PERSONALBAR_POS=0
EXPANDED=YES

#URL
ID=13
NAME=Загрузка Opera
URL=http://www.opera.com/download/
VISITED=1198159316
#URL
ID=14
NAME=Сообщество Opera
URL=http://my.opera.com/
ICONFILE=my.opera.com.ico
ON PERSONALBAR=YES
PERSONALBAR_POS=1
#FOLDER
ID=15
NAME=Codenet
ON PERSONALBAR=YES
PERSONALBAR_POS=0
EXPANDED=YES

#URL
ID=16
NAME=Сайт Codenet
URL=http://www.codenet.ru/
VISITED=1198159316



Необходимо автоматически прочесать этот файлик и заполнить stringgrid
таким спсобом.

Если встречается слово: "#FOLDER" то добавляем новую строку в таблицу и указывается "ID", "Name". Если встречается "#URL" также или дописываем эту строку или вставляем новую строку и пишем "ID", "NAME", "URL".

Т.Е. программа должна записать в стрингрид следующее:

12|Opera |13|Загрузка Opera|http://www.opera.com/download/|
- | - |14|Сообщество Opera |http://my.opera.com/|
15|Codenet|16|Сайт Codenet|http://www.codenet.ru/|

Помогите, как это сделать???? :confused: сильно только не критикуйте, что мол "поисщи", "что у тебя рук нет?"

P.S. Заранее огромное спасибко :rolleyes:

257
26 февраля 2008 года
kosfiz
1.6K / / 18.09.2005
вот консольный вариант, разобраться и переделать под себя несложно.
[highlight=delphi]
program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

type
FolderURLType = record
ID, Name, URL: string;
end;

procedure ReadURLFromFile(var f: textfile; var fdn: FolderURLType);
var
s: string;
begin
readln(f, s);
fdn.ID:=copy(s, pos('=', s) + 1, Length(s) - pos('=', s));
readln(f, s);
fdn.Name:=copy(s, pos('=', s) + 1, Length(s) - pos('=', s));
readln(f, s);
fdn.URL:=copy(s, pos('=', s) + 1, Length(s) - pos('=', s));
end;

procedure ReadFolderFromFile(var f: textfile; var fdn: FolderURLType);
var
s: string;
begin
readln(f, s);
fdn.ID:=copy(s, pos('=', s) + 1, Length(s) - pos('=', s));
readln(f, s);
fdn.Name:=copy(s, pos('=', s) + 1, Length(s) - pos('=', s));
fdn.URL:='';
end;

var
f: textfile;
s: string;
fdn: FolderURLType;
begin
assignfile(f, 'c:\1.txt');
reset(f);
while not eof(f) do
begin
readln(f, s);
if s='#URL' then
ReadUrlFromFile(f, fdn)
else
if s='#FOLDER' then
ReadFolderFromFile(f, fdn)
else continue;
writeln(fdn.ID, ' ', fdn.Name, ' ', fdn.URL);
end;
close(f);
readln;
end.
[/highlight]
1.9K
26 февраля 2008 года
Cool Xacker
148 / / 06.06.2006
Спасибо, думал, что уже никто не ответит, попробовал, но при запуске пишет ошибку на "Close(f)" типа: Too many actual parameters.
про тестировал и програ вываливается при записи: writeln(fdn.ID, ' ', fdn.Name, ' ', fdn.URL);

В чём может быть дело???
257
26 февраля 2008 года
kosfiz
1.6K / / 18.09.2005
мой код использовал в консольном проекте? изменял что-нибудь? показывай. у меня все прекрасно работает.
1.9K
26 февраля 2008 года
Cool Xacker
148 / / 06.06.2006
Цитата: kosfiz
мой код использовал в консольном проекте? изменял что-нибудь? показывай. у меня все прекрасно работает.



нет я не использовал его в консоле и т.д. сделал обычное приложение, записал процедуры и кнопку на запуск прочёсывания и всё!!!

а может ошибка возникать из-за того, что файл нами уже открыт, а тут он его хочет менять или нет???

257
26 февраля 2008 года
kosfiz
1.6K / / 18.09.2005
код или проект(в виде архива прицепи) в студию вместе с файлом, который нужно читать(подправлю). на writeln вылетит поскольку если оконное приложение, то писать некуда: ты консоль не подцепил.
1.9K
26 февраля 2008 года
Cool Xacker
148 / / 06.06.2006
а можно как нибудь проще и без консоли (она мне не к чему)!!!

Плиззз.
257
26 февраля 2008 года
kosfiz
1.6K / / 18.09.2005
да это ж ПРИМЕР только!:) тебе нужно только взять то, что нужно из приведенного кода и все! а вот уж что брать, разбирайся тогда сам, если не показываешь куда это тебе запихнуть в проект надо - да и полезнее будет самому.
1.9K
26 февраля 2008 года
Cool Xacker
148 / / 06.06.2006
мне нужно это впихнуть просто в процедуру кнопки и всё, я так и сделал, после этого он начал ругаться :(
257
26 февраля 2008 года
kosfiz
1.6K / / 18.09.2005
Цитата: Cool Xacker
мне нужно это впихнуть просто в процедуру кнопки и всё, я так и сделал, после этого он начал ругаться :(


мда...
[highlight=delphi]
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

FolderURLType = record
ID, Name, URL: string;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure ReadURLFromFile(var f: textfile; var fdn: FolderURLType);
var
s: string;
begin
readln(f, s);
fdn.ID:=copy(s, pos('=', s) + 1, Length(s) - pos('=', s));
readln(f, s);
fdn.Name:=copy(s, pos('=', s) + 1, Length(s) - pos('=', s));
readln(f, s);
fdn.URL:=copy(s, pos('=', s) + 1, Length(s) - pos('=', s));
end;

procedure ReadFolderFromFile(var f: textfile; var fdn: FolderURLType);
var
s: string;
begin
readln(f, s);
fdn.ID:=copy(s, pos('=', s) + 1, Length(s) - pos('=', s));
readln(f, s);
fdn.Name:=copy(s, pos('=', s) + 1, Length(s) - pos('=', s));
fdn.URL:='';
end;

procedure TForm1.Button1Click(Sender: TObject);
var
f: textfile;
s: string;
fdn: FolderURLType;
begin
assignfile(f, 'c:\1.txt');
reset(f);
while not eof(f) do
begin
readln(f, s);
if s='#URL' then
ReadUrlFromFile(f, fdn)
else
if s='#FOLDER' then
ReadFolderFromFile(f, fdn)
else continue;
{распределяешь по ячейка stringgrid fdn.ID, fdn.Name и fdn.URL}
end;
system.close(f);
end;

end. [/highlight]
надеюсь stringgrid заполнить теперь сумеешь.

1.9K
21 марта 2008 года
Cool Xacker
148 / / 06.06.2006
а как результат просто отобразить в richedit (т.е. если это забивать не в stringgrid, а в текстовое поле)???
257
22 марта 2008 года
kosfiz
1.6K / / 18.09.2005
Цитата: Cool Xacker
а как результат просто отобразить в richedit (т.е. если это забивать не в stringgrid, а в текстовое поле)???


а хелп посмотреть или книжку почитать?
[highlight=delphi]
RichEdit1.Lines.Add('строка'); //добавить строку
[/highlight]
а для своего случая сам сообразишь

1.9K
24 марта 2008 года
Cool Xacker
148 / / 06.06.2006
спасибо :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог