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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2009, 10:41   #1
Leo20
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 36
Сообщение

Код:
procedure TForm1.ListView1Edited(Sender: TObject; Item: TListItem;
  var S: String);
begin
  RenameFile(ExcludeTrailingBackSlash(directorylistbox1.Directory) + '\' + listview1.Selected.Caption,
  ExcludeTrailingBackSlash(directorylistbox1.Directory) + '\' + s);
  {$I-}
directorylistbox1.update;
directorylistbox1.Refresh;
  {$I+}
end;
procedure TForm1.N7Click(Sender: TObject);
begin
if listView1.Selected <> nil then
begin
listview1.Selected.EditCaption;
end;
end;
вот этот код выдает ошибку

Debugger Exception Notification

Project xxxx raised exception class EAccessViolation with message 'Access violation at address 00404B06 in module 'xxxxx.exe'. Read of address 00000000'. Process stopped. Use Step or Run to continue

если убрать
directorylistbox1.update;
то ошибки нет, но директорилист не обновляется ((((

13:27

еще такой вопрос, есть в делфи функция для определения размера каталога? а то перебором файлов все это дело долго работает.

У нас принято пользоваться кнопочкой "Правка", дабы не плодить посты подряд, друг за другом.
Модератор

Последний раз редактировалось mihali4; 13.12.2009 в 15:02.
Leo20 вне форума Ответить с цитированием
Старый 13.12.2009, 13:31   #2
IT-man
АльTRUEи$т
Форумчанин
 
Аватар для IT-man
 
Регистрация: 19.03.2009
Сообщений: 784
По умолчанию

Как определить размер каталога? DFaq
Код:
var
  Form1: TForm1;
  DirBytes: integer;

implementation

{$R *.dfm}

function DirSize(Dir: string): integer;
var
  SearchRec: TSearchRec;
  Separator: string;
begin
  if Copy(Dir,Length(Dir),1)='\' then
    Separator := ''
  else
    Separator := '\';
  if FindFirst(Dir+Separator+'*.*',faAnyFile,SearchRec) = 0 then
  begin
    if FileExists(Dir+Separator+SearchRec.name) then
      DirBytes := DirBytes + SearchRec.Size
    else
    if DirectoryExists(Dir+Separator+SearchRec.name) then
    begin
      if (SearchRec.name<>'.') and (SearchRec.name<>'..') then
        DirSize(Dir+Separator+SearchRec.name);
    end;
    while FindNext(SearchRec) = 0 do
    begin
      if FileExists(Dir+Separator+SearchRec.name) then
        DirBytes := DirBytes + SearchRec.Size
      else
      if DirectoryExists(Dir+Separator+SearchRec.name) then
      begin
        if (SearchRec.name<>'.') and (SearchRec.name<>'..') then
          DirSize(Dir+Separator+SearchRec.name);
      end;
    end;
  end;
  FindClose(SearchRec);
  Result:=Result+DirBytes;
end;

вызов:

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
DirBytes:=0;
DirBytes := DirSize('c:\windows');
Label1.Caption := IntToStr(DirBytes);
end;

********************************************************

Возвращаемая размерность - байты.):
var
dirbytes : integer;

function tfilebrowser.dirsize(dir:string):integer;
var
searchrec : tsearchrec;
separator : string;
begin
if copy(dir,length(dir),1)='\' then
separator := ''
else
separator := '\';
if findfirst(dir+separator+'*.*',faanyfile,searchrec) = 0 then begin
if fileexists(dir+separator+searchrec.name) then begin
dirbytes := dirbytes + searchrec.size;
{memo1.lines.add(dir+separator+searchrec.name);}
end else if directoryexists(dir+separator+searchrec.name) then begin
if (searchrec.name<>'.') and (searchrec.name<>'..') then begin
dirsize(dir+separator+searchrec.name);
end;
end;
while findnext(searchrec) = 0 do begin
if fileexists(dir+separator+searchrec.name) then begin
dirbytes := dirbytes + searchrec.size;
{memo1.lines.add(dir+separator+searchrec.name);}
end else if directoryexists(dir+separator+searchrec.name) then
begin
if (searchrec.name<>'.') and (searchrec.name<>'..') then begin
dirsize(dir+separator+searchrec.name);
end;
end;
end;
end;
findclose(searchrec);
end;
Цитата:
«Никто не войдет в Рай, имея хотя бы крупицу гордыни в своем сердце». «Аллах Красив и любит красоту. Гордыня означает отказ от истины и высокомерие»
IT-man вне форума Ответить с цитированием
Старый 13.12.2009, 14:09   #3
Leo20
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 36
По умолчанию

спасибо)

а как на счет первого вопроса????
Leo20 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компонент DirectoryListBox1 daget Помощь студентам 4 01.11.2009 12:28
update shad0w SQL, базы данных 3 27.10.2009 11:44
Delete и Update crit БД в Delphi 58 18.05.2009 20:49
нужна помощь в компонентах DirectoryListBox1 и FileListBox1 kuzmich Компоненты Delphi 1 13.01.2009 11:00
UPDATE и DELETE Дамир БД в Delphi 3 13.03.2007 01:44