![]() |
|
|
#1
|
||||
|
||||
|
Народ!
помогите пожалуйста! задача такая: есть определенное количество файлов каждый файл записан отдельно(1 файл в 1 блокнот 2 файл в 2 блокнот... форматTXT) нужно запрограммировать чтение всех файлов,создав программу список) я в дельфи тормоз)))))) в поле введите файл нужно вводить адрес файла ![]() |
|
#2
|
||||
|
||||
|
Вам нужен навигатор, типа записной книжки по файлам, или же это должен быть один файл собранный из этой кучи?
|
|
#3
|
||||
|
||||
|
ну типа навигатора наверно...)))
|
|
#4
|
||||
|
||||
|
да скорее всего навигатор)))))
![]() |
|
#5
|
||||
|
||||
|
Люблю такие элегантные красивые задачки.
Держите: Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;
type
TForm1 = class(TForm)
Notebook: TPageControl;
procedure FormCreate(Sender: TObject);
procedure FileListClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
Var
Page: TTabSheet;
Memo: TMemo;
FileList: TListBox;
i,j: Integer;
FileInfo: TSearchRec;
FilePath,FileMask: String;
Files: TStringList;
begin
FilePath := ParamStr(1);
FileMask := ParamStr(2);
if FilePath = '' then FilePath := ExtractFilePath(ParamStr(0));
if FileMask = '' then FileMask := '*.txt';
Files := TStringList.Create;
Files.Sorted := True;
if FindFirst(FilePath + FileMask, faAnyFile, FileInfo) = 0
then repeat
if FileInfo.Attr and faAnyFile <> 0
then Files.Add(AnsiUpperCase(FileInfo.Name))
until FindNext(FileInfo) <> 0;
for i := 65 to 90
do begin
Page := TTabSheet.Create(Notebook);
Page.PageControl := Notebook;
Page.Caption := Chr(i);
FileList := TListBox.Create(Page);
FileList.Parent := Page;
FileList.Align := alLeft;
FileList.Width := 200;
FileList.OnClick := FileListClick;
Memo := TMemo.Create(Page);
Memo.Parent := Page;
Memo.Align := alClient;
for j := 0 to Files.Count - 1
do if Files.Strings[j][1] = AnsiUpperCase(Chr(i))
then FileList.AddItem(Files.Strings[j],nil);
end;
Files.Free;
end;
procedure TForm1.FileListClick(Sender: TObject);
Var
M: TMemo;
LB: TListBox;
begin
LB := TListBox(Notebook.ActivePage.Controls[0]);
M := TMemo(Notebook.ActivePage.Controls[1]);
M.Clear;
M.Lines.LoadFromFile(LB.Items[LB.ItemIndex]);
end;
end.Код:
object Form1: TForm1
Left = 351
Top = 116
Width = 870
Height = 640
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Notebook: TPageControl
Left = 8
Top = 8
Width = 849
Height = 585
TabOrder = 0
TabPosition = tpBottom
TabWidth = 30
end
end |
|
#6
|
||||
|
||||
|
Значит собираете так:
Создаете пустой проект в Дельфи. Копируете то что написано после: и dfm-файл Переходите в Дельфи по Alt+F12 в режим исходного кода формы и заменяете все вставив из буфера. Вторично нажимаете Alt+F12 для возврата в режим дизайнера. Копируете то что написано после слова Держите: переходите в редактор кода программы и заменяете все вставив из буфера. Программа работает в 2-х режимах. Если при запуске указать как параметры путь и маску файлов то будут использованы эти данные, если ничего не задано, то будет использован каталог запуска программы и файлы с расширением *.txt |
|
#7
|
||||
|
||||
|
ааа)))чувак)))спасибо)))))
а можешь мне напомнить как дополнительную форму делать??? а то я забыла((( |
|
#8
|
||||
|
||||
|
я так понимаю нужен лист бокс???
я честно не поняла что делать))) наверно я тупенькая))) ахаха))) |
|
#9
|
|||
|
|||
|
Если в дизайнере, то File -> New -> Form.
Если в коде создание из некото класса TForm5, например, то Код:
Form5 := TForm5.Create(Application); |
|
#10
|
||||
|
||||
|
может попробуешь объяснить что в форму пихать?)))
|
|
#11
|
||||
|
||||
|
мне нужно создать две формы в одну впихнуть автора(о себе) во вторую впихнуть описание программы
|
|
#12
|
||||
|
||||
|
а вот еще:
есть короче прога: Код:
unit rez;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
Label1: TLabel;
Edit1: TEdit;
Memo1: TMemo;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
File1: TMenuItem;
Exit1: TMenuItem;
Open1: TMenuItem;
OpenDialog1: TOpenDialog;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
procedure Exit1Click(Sender: TObject);
procedure Open1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var fl:text;
fl1:TEXT;
word,sentence,str:integer;
ch:char;
flug:boolean;
procedure readproc(var fl:text;var w,sen,st:integer);
var ch2:char;
begin
read(fl,ch2);
if ch2=' 'then w:=w+1;
if ch2='.'then sen:=sen+1;
if ch2=#13then st:=st+1;
end;
procedure writeproc(var fl:text;fn:tfilename;w,sen,st:integer);
begin
AssignFile(fl,FN);
rewrite(fl);
writeln(fl,'wwords:',inttostr(w));
writeln(fl,'sentences:',inttostr(sen));
writeln(fl,'strings:',inttostr(st));
closefile(fl);
end;
procedure TForm1.Exit1Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Open1Click(Sender: TObject);
begin
if opendialog1.execute
then begin
edit1.Text:=opendialog1.filename;
memo1.Lines.LoadFromFile(edit1.Text);
AssignFile(fl,edit1.Text);
flug:=true;
end;
end;
end.и нужно короче сделать пролистывание файлов именно файлов!!! сможете подсказать? Последний раз редактировалось Admin, 26.05.2010 в 20:37. |
|
#13
|
||||
|
||||
|
Короче, скачайте архив и не мучайтесь.
Я что-то не пойму, что вы подразумеваете еще под пролистыванием файлов? У меня список файлов по алфавиту показывает, выбор этих файлов есть, отображение содержания текущего тоже есть. Что еще-то? Последний раз редактировалось Страдалецъ, 26.05.2010 в 20:26. |
|
#14
|
||||
|
||||
|
В архиве чуток подправленный исходный вариант.
|
|
#15
|
||||
|
||||
|
ну у меня есть еще другая прога
просто для чтения лекций по физиологии и я хотела не каждый раз открывать файл(через опендиалог) а все файлы пролистывать прям в проге... спасибо кстати))) |