Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2317 • Страница 21 из 116<  1 ... 18  19  20  21  22  23  24 ... 116  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 27.05.2004
Откуда: Москва
Может также быть переполнение стека FPU.



Партнер
 

Знаю одно, что При x=-2.235e-2, y=2.23, z=15.221 ===> Fi=39.374 должно быть...
Asteroid
можешь считать их, "пока", константами.


 

Member
Статус: Не в сети
Регистрация: 30.01.2003
Откуда: Москва
36.298, без ошибок. Delphi 7. Проверь, что значения x и y остались такими, какими должны. Ctrl+Alt+C, Ctrl+Alt+F в помощь :)

Satan_Klaus Маловероятно, компилятор Дельфей слабо использует FPU, если сохранять в переменные - вообще не должно быть переполнения.


 

Member
Статус: Не в сети
Регистрация: 30.04.2004
Откуда: [Omsk Team]
Asteroid посмотри исходники Power, в делфи он реализован ужасно, в 6-й версии по крайней мере

_________________
forum.omskteam.ru- Все о керамограните


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Dilon А что там не так?
Код:
function Power(const Base, Exponent: Extended): Extended;
begin
  if Exponent = 0.0 then
    Result := 1.0               { n**0 = 1 }
  else if (Base = 0.0) and (Exponent > 0.0) then
    Result := 0.0               { 0**n = 0, n > 0 }
  else if (Frac(Exponent) = 0.0) and (Abs(Exponent) <= MaxInt) then
    Result := IntPower(Base, Integer(Trunc(Exponent)))
  else
    Result := Exp(Exponent * Ln(Base))
end;

Если глянуть в полученный асм, то увидим что там на полную используется FPU.


 

Member
Статус: Не в сети
Регистрация: 30.04.2004
Откуда: [Omsk Team]
Ray Adams ну насколько мне известно в FPU не входит ни, exp ни log
формула x**n = exp(ln(x**n)) = exp(n*ln(x)) не очень подходит для большого объема вычислений,
сейчас я не помню точно алгоритм из VS, однако, если интересно, то можно посмотреть статью на rsdn.ru
на эту тему

Добавлено спустя 1 минуту, 19 секунд:
http://rsdn.ru/article/alg/fastpow.xml

_________________
forum.omskteam.ru- Все о керамограните


 

Member
Статус: Не в сети
Регистрация: 14.08.2003
Откуда: Питер
Помогите написать процедуру, которая показывает названия папок в каталоге. Положим имеется папка C:\Temp\ и в ней находятся папки 1,2,3 и до 100. Так вот как вывести в листбоксе названия этих папок.
И как будет выглядеть процедура но уже с выводом подпапок 1,2,3.

_________________
Лучшая зашита - это нападение.


 

Advanced member
Статус: Не в сети
Регистрация: 23.10.2003
Откуда: Иркутск/Майкоп
Halfback
Может, лучше компоненты TDirectoryOutline/TShellTreeView использовать (страница Samples)?

_________________
Края каждого совершенно нового крышка процессора не на 100% гладкая. Это связано с тем, что следов мастерства не избежать. (c) Али.


 

Member
Статус: Не в сети
Регистрация: 06.02.2004
Откуда: Москва
Помогите пожалуйста. Даны 2 edit'a, нужно чтобы при нажатии стрелки вверх, когда курсор установлен на edit2, курсор перекидывался вверх на edit1...

Моя процедура:
{ procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: char);
begin
if Key = #38 then
begin
Edit1.SetFocus;
end;
end; }

или так

{procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_UP then
begin
Edit1.SetFocus;
end;
end;}

Они обе игнорируются программой. Похоже в delphi стандартно прописано, что при нажатии клавиши UP курсор перемещается влево по edit'у... Как это обойти! ОЧЕНЬ надо! У меня 9 конкурс по работе... Помогите пожалуйста!

_________________
No progredi est regredi.


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
все отлично пашет
Код:
procedure TForm1.Edit3KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
     if key=vk_down then Edit4.SetFocus;
end;

procedure TForm1.Edit4KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
     if key=vk_up then Edit3.SetFocus;
end;


 

Member
Статус: Не в сети
Регистрация: 14.08.2003
Откуда: Питер
vor
Не, они не подходят. Мне просто в Листбоксе нужны НАЗВАНИЯ поддиректорий. С файлами разобрался а как с директориями работать(ну т.е. перелистывать вперёд-назад) - ХЗ...

_________________
Лучшая зашита - это нападение.


 

Advanced member
Статус: Не в сети
Регистрация: 23.10.2003
Откуда: Иркутск/Майкоп
Halfback
Тогда через FindFirst/FindNext с атрибутом faDirectory

(из справки по FindFirst)
Цитата:
The Attr parameter specifies the special files to include in addition to all normal files. Choose from these file attribute constants when specifying the Attr parameter:

Constant Value Description
faReadOnly $00000001 Read-only files
faHidden $00000002 Hidden files
faSysFile $00000004 System files
faVolumeID $00000008 Volume ID files
faDirectory $00000010 Directory files
faArchive $00000020 Archive files
faAnyFile $0000003F Any file

файлы выбросить по ходу дела, проверяя значение атрибутов у того, что нашлось.

(не проверял)

_________________
Края каждого совершенно нового крышка процессора не на 100% гладкая. Это связано с тем, что следов мастерства не избежать. (c) Али.


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Halfback Простейшая весЫчь :) Нажми F1 на FindFirst там есть готовый пример.


 

Member
Статус: Не в сети
Регистрация: 14.08.2003
Откуда: Питер
vor
Вот что я нашёл:
Код:
Функции и процедуры для работы с каталогами

ChDir                     Устанавливает текущий каталог.   
CreateDir            Создает новый каталог.   
DirectoryExists   Определяет, существует ли указанный каталог.   
ForceDirectories   Создает все недостающие каталоги по заданному пути.   
GetCurrentDir   Возвращает полное имя текущего каталога.   
GetDir            Возвращает имя текущего каталога на указанном диске.   
MkDir                     Создает подкаталог.   
RemoveDir            Удаляет заданный каталог.   
RmDir            Удаляет заданный каталог.   
SetCurrentDir   Устанавливает текущий каталог.

_________________
Лучшая зашита - это нападение.


 

Advanced member
Статус: Не в сети
Регистрация: 23.10.2003
Откуда: Иркутск/Майкоп
Halfback
Можно так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  r:TSearchRec;
begin
  ComboBox1.Items.Clear;
  if FindFirst('C:\*.*',faDirectory,r)=0 then begin
      repeat
        if r.Attr and faDirectory <> 0 then
          ComboBox1.Items.Add(r.Name);
      until FindNext(r) <> 0;
      FindClose(r);
  end;
end;


Ray Adams
Мне кажется, или в примере из справки косяк?
Код:
...
  if CheckBox7.Checked then
    FileAttrs := FileAttrs + faAnyFile;
...

- почему "+"? faAnyFile - это и есть сумма всех предыдущих.

_________________
Края каждого совершенно нового крышка процессора не на 100% гладкая. Это связано с тем, что следов мастерства не избежать. (c) Али.


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
vor Да нет, сумма всех будет $77, а faAnyFile=$3F, в AnyFile не входят кажется каталоги


 

Member
Статус: Не в сети
Регистрация: 04.01.2004
Откуда: Владивосток
1)Кто что подскажет. Есть огромная таблица.(порядка 2000 тыс различн. записей)
Как лучше осущ. поиск? (работаю через ADO) Квери? Или что нить побыстрее есть?
2)Как в мемо поставить курсор именно на 345 символ(если не по символам, то по строкам.)
Т.е. такая проблема. В мемо порядка нескольких страниц текста. Мне нужно в другом поле начать поиск и у меня в мемо должно прокрутиться до нужной записи. Надеюсь понятно обяснил.
3)Как правильно ввыполнять поиск? Ну человек вводит в поиск: курица. Программа должна искать не "курица" а "куриц" т.е без окончания, что б побольше нашлось . А если например слово "напиток", будет искать "напито" . Но в тексте может встретиться "напитКа" или че нить вроде. Тогда это слово не найдется. Т.е надо убирать уже 2 буквы с конца слова. Но бывает что приходится и 3 буквы убирать(пример не могу придумать, но сталкивался точно) Тогда что? Как все это реализовать правильно? Типа если нашлось больше 10, то оставить . А если меньше 10, то убрать еще одну букву. Потом если опять мало найдется даже уже без 2 букв, то искать без 3? Не, это слишком тормознуто получится. Как правильно сделать поиск.
К этому же пункту. Будет слово суп искаться. Найдется 9 раз. До 10 не дотягивает. Тогда уберётся одна буква и получится "су" А вот это уже найдется тысячи раз(СУши,заСУшить,коСУля, хотя искалась не она, а СУП). Вообщем геморрой.

_________________
*Cofradia Intel* <<<ATI>>>
P4 2.8@3.6/X800Pro/1024Mb/2*160gb WD1600JB/SyncMaster 932в/СВО/Xp SP2 + Asus P525


 

обьясните где зхдесь ошибка?
num_loop equ 65536
mov cx,num_loop
start_loop


dec cx
jnz $+3
dec dx

jmp start_loop
lbl: TEST dx,dx
jnz start_loop

end_loop


 

Member
Статус: Не в сети
Регистрация: 14.08.2003
Откуда: Питер
У меня вот тоже вопросик: есть такой исходник исходник
Код:
procedure TForm1.DeCompress(First: string);
var
  i,j: integer;
  BufCount: string;
  BufSymvol: string;
  count: integer;
begin
Edit2.Clear;
SetLength(BufCount,0);
SetLength(BufSymvol,0);
i:=1;
while i<>Length(First)+1 do
    begin
    case First[i] of
    '0'..'9': begin
              BufCount:= BufCount + copy(First,i,1);
              SetLength(BufSymvol,0);
              end;
    'A'..'Z': begin
              if Length(BufCount)=0 then count:=1
                                    else count:= StrToInt(BufCount);
              for j:=1 to count do
                    Edit2.Text:= Edit2.Text + copy(First,i,1);
              SetLength(BufCount,0);
              end;
        end; {case}
    inc(i);
    end; {begin}


Так вот вопросик по этой строке в коде:
Код:
case First[i] of


Почему вместо First[i] не получается скажем вtcnb copy(First,i,1) ??? Если я так делаю то вот такая ошибка выплывает:
Код:
while i<>Length(First)+1 do
    begin
    case copy(First,i,1) of                                       //   [Error] Unit1.pas(93): Ordinal type required
    '0'..'9': begin                                                   //   [Error] Unit1.pas(94): Incompatible types: 'Integer' and 'Char'
              BufCount:= BufCount + copy(First,i,1);
              SetLength(BufSymvol,0);
              end;
    'A'..'Z': begin                                                   //   [Error] Unit1.pas(98): Incompatible types: 'Integer' and 'Char'
              if Length(BufCount)=0 then count:=1
                                    else count:= StrToInt(BufCount);
              for j:=1 to count do
                    Edit2.Text:= Edit2.Text + copy(First,i,1);
              SetLength(BufCount,0);
              end;
        end; {case}


Или если даже пропишу строковую переменную buf:= copy(First,i,1) и вставлю в условие case то выйдет та же еруеда.
Помогите разобраться а то мне никак не понять.

_________________
Лучшая зашита - это нападение.


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
попробуй так
Код:
case copy(First,i,1)[1] of   

А английский надо знать, а также еще нажимать на F1 иногда :).
[quote]
[Error] Unit1.pas(93): Ordinal type required
[/quoe]
Все описано в сообщении об ошибке.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 2317 • Страница 21 из 116<  1 ... 18  19  20  21  22  23  24 ... 116  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan