Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2009, 00:09   #1
zmey31313
Форумчанин
 
Регистрация: 19.11.2009
Сообщений: 155
По умолчанию Работа с кодом

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


Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, FileCtr, XPMan;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
FileName: string;
cDir: string;
n: integer;

procedure Find;
var
SearchRec: TSearchRec;
begin
GetDir(0,cDir);
if cDir[length(cDir)] <> n then
cDir := cDir + '\';
if FindFirst(FileName, faArchive, SearchRec) = 0
then
repeat
if (SearchRec.Attr and faAnyFile) = SearchRec.Attr
then
begin
Form1.Memo1.Lines.Add(cDir + SearchRec.Name);
n := n + 1;
end;
until FindNext(SearchRec) <> 0;
if FindFirst('*', faDirectory, SearchRec) = 0 then
repeat
if (SearchRec.Attr and faDirectory) = SearchRec.Attr then
begin
if SearchRec.Name[1] <> '.' then
begin
ChDir(SearchRec.Name);
Find;
ChDir('..');
end;
end;
until FindNext(SearchRec) <> 0;
end;

function GetPath(mes: string):string;
var
Root: string;
pwRoot : PWideChar; Dir: string;
begin
Root := '';
GetMem(pwRoot, (Length(Root)+1) * 2);
pwRoot := StringToWideChar(Root, pwRoot, MAX_PATH*2);
if SelectDirectory(mes, pwRoot, Dir) then
if length(Dir) =2
then GetPath := Dir+'\'
else GetPath := Dir
else
GetPath := '';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Clear;
Label4.Caption := '';
FileName := Edit1.Text; .
cDir := Edit2.Text;
n:=0;
ChDir(cDir);
Find;
if n = 0 then
ShowMessage('Файлов, удовлетворяющих критерию поиска нет.')
else
Label4.Caption := 'Найдено файлов:' + IntToStr(n);
end;

procedure TForm1.Button2Click (Sender: TObject);
var
Path: string;
begin
Path := GetPath('Выберите папку');
if Path <> '' then
Edit2.Text := Path;
end;
end.
И кстате в uses что значит FileCtr.
По всем вопросам связанным с Делфи или Паскаль обращайтесь, чем смогу тем и помогу.
Помог жми на весы!!!
dmi83206389@mail.ru

Последний раз редактировалось mihali4; 25.11.2009 в 11:19. Причина: Неправильно ввёл код
zmey31313 вне форума Ответить с цитированием
Старый 25.11.2009, 00:24   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Читаем правила, оформляем код, как положено.
mihali4 вне форума Ответить с цитированием
Старый 25.11.2009, 08:51   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
zmey31313
А на какой строке то ошибки всплывают?
Цитата:
И кстате в uses что значит FileCtr.
вообще-тотам модули указываются, но простотам ошибка нужно писать - FileCtrl
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.11.2009, 11:26   #4
zmey31313
Форумчанин
 
Регистрация: 19.11.2009
Сообщений: 155
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А на какой строке то ошибки всплывают?
Они там множественные. И кстате код можно как нибудь по короче сделать?
По всем вопросам связанным с Делфи или Паскаль обращайтесь, чем смогу тем и помогу.
Помог жми на весы!!!
dmi83206389@mail.ru
zmey31313 вне форума Ответить с цитированием
Старый 25.11.2009, 11:34   #5
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Этот код из DelphiWorld на сколько я знаю, я его разбирал и работал с ним...
кидайте тексты ошибок, тогда будем Вам помогать
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Старый 25.11.2009, 11:57   #6
zmey31313
Форумчанин
 
Регистрация: 19.11.2009
Сообщений: 155
По умолчанию Ошибка возникает

Ошибка возникала в
Код:
    if cDir[length(cDir)] <> n then

Всё я убрал ошибку, просьба, если возможно уменьшете код и пришлите.
По всем вопросам связанным с Делфи или Паскаль обращайтесь, чем смогу тем и помогу.
Помог жми на весы!!!
dmi83206389@mail.ru

Последний раз редактировалось zmey31313; 25.11.2009 в 12:12.
zmey31313 вне форума Ответить с цитированием
Старый 25.11.2009, 13:08   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А зачем его уменьшать? Работает и пусть себе работает.
К тому же ты ТЗ на этот код не дал, х. его з. что он должен делать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемма с кодом GoRdoN 17 Общие вопросы C/C++ 3 07.08.2009 21:29
Помогите с кодом lewka-serdceed Общие вопросы Delphi 1 22.06.2009 00:25
Работа с двоичным кодом lacost Общие вопросы Delphi 7 19.11.2008 10:38
Что с кодом ? Look Общие вопросы C/C++ 11 06.11.2007 14:48