Форум: "Потрепаться";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];
Внизпомогите найти источник варнинга. Найти похожие ветки
← →
jack128 © (2004-08-11 01:48) [40]
> и губительно скажется на производительности.
ЛОЛ!!!
Ладно забей - как нить избавлюсь от этих варнингов..
← →
GuAV © (2004-08-11 01:54) [41]
> Ладно забей
Та нет, самому теперь интересно стало... ворнинги явно не по делу... переменная инциируется компилером... и сам же видишь, что функция и процедура - онди хрен, а они почему то только в функции...
В Борланд написать, что ли...
Как ещё мысля :) если весь код твой, перепиши, чтоб были процедуры.
← →
GuAV © (2004-08-11 01:56) [42]
> перед вызовом функции
в начале метода.
← →
Piter © (2004-08-11 02:35) [43]GuAV © (11.08.04 1:44) [39]
А если не хочешь так, то в nil инициализируй сам перед вызовом функции - но тогда будет одна лишшшняя инструкция в коде и губительно скажется на производительности
Да, такая программа даже на P4 будет тормозить... однозначно...
← →
GuAV © (2004-08-11 02:52) [44]jack128 © (11.08.04 01:48) [40]
Piter © (11.08.04 02:35) [43]
Хотите ещё посмеятся? Это типа как GuAV добился резкого прироста производительности:
былоbegin
стало
if (F.Name<>".") and (F.Name<>"..") then
Process(F.Name);
endbegin
if DirIsNotThisOrParent(F.Name) then
Process(F.Name);
end
...
function DirIsNotThisOrParent(const S: string): Boolean;
asm
MOV EDX, EAX
CALL System.@LStrLen
OR EAX, EAX // Нуль?
JZ @@2 // если нуль
CMP EAX, 2
JG @@2 // Длинее
JE @@1 // Равна
// Короче
CMP [EDX].Byte, "."
SETNZ AL // True если не равна
RET
@@1: CMP [EDX].Word, ".."
SETNZ AL
RET
@@2: MOV AL, True
end;
← →
jack128 © (2004-08-11 11:11) [45]А можно узнать что выполняется в Process(F.Name), что по сравнению так сильно влияние двух сравнений? Да и вообще, я так понимаю f - TSearchRec ? тогда процедуры поиска FindFirst/Next - должны также нивилировать значение этих сравнений.. Вобщем задачу опиши - интересно же ;-)
← →
GuAV © (2004-08-11 12:10) [46]по оффтопу:
Рекурсивный поиск. Ищет по подпапкам, ели Recourse = True. Вызывает AddFile для каждого файла.
закоментируй проверку if DirIsNotThisOrParent(F.Name) then - и будет Стек Оверфлов.
procedure TfrmMain.AddDir(const FileName: string);
const AttrArr: array[Boolean] of Integer
=(faAnyFile and not faDirectory, faAnyFile);
var SrcAttr: Integer;
procedure Process(const FileName: string);
var F: TSearchRec;
begin
ChDir(FileName);
if FindFirst("*",SrcAttr,F)=0 then
try
repeat
if (F.Attr and faDirectory)<>0 then
begin
if DirIsNotThisOrParent(F.Name) then
Process(F.Name);
end
else AddFile(ExpandFileName(F.Name));
until FindNext(F)<>0;
finally
FindClose(F);
end;
ChDir("..");
end;
begin
BeginUpdate;
try
SrcAttr:=AttrArr[Recourse];
Process(ExpandFileName(FileName));
finally
EndUpdate;
end;
end;
по сабжу:
в самом начале метода присвоить nil не помогает?
← →
jack128 © (2004-08-11 13:08) [47]
> по оффтопу:
Мы ж потрепаться, какие оффтопы ;-)
не знаю.
procedure TfrmMain.AddFile(const s: string);
begin
ListBox1.Items.Add(s);
end;
procedure TfrmMain.AddDir(const FileName: string);
...
begin
ListBox1.Items.BeginUpdate;
try
SrcAttr:=AttrArr[true];
Process(ExpandFileName(FileName));
finally
ListBox1.Items.EndUpdate;
end;
end;
Почти без разницы, использовал ли я асм или паскаль.. Странно все это..
> по сабжу:
Да, конечно, никто и не сомневался..
← →
GuAV © (2004-08-11 13:28) [48]
> Почти без разницы, использовал ли я асм или паскаль.. Странно
> все это..
Я же сказал: добился резкого прироста, столь резкого, сколь резко сказалась для твоего кода лишнее привоение 0 ;-) Не уверен даже прирост ли :-)
> Да, конечно, никто и не сомневался..
Не помогает? Ну тогда объяви как интежер и при кождом юзании typecast делай.
← →
Anatoly Podgoretsky © (2004-08-11 13:33) [49]jack128 © (11.08.04 13:08) [47]
Мы ж потрепаться, какие оффтопы ;-)
В Потрепать кроме соблюдения темы ты еще обязан и трепаться.
Страницы: 1 2 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.03 c