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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2009, 16:27   #11
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

$Optimization эквивалентна $O
единственная разница меж ними..

$Optimization неважно ON или OFF.. работает нормально..
$O только +

незнаю как у остальных.. это конкретно в моем случае..
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 01.11.2009, 17:18   #12
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

Код:
{$R+} {$Q+}
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/
OCTAGRAM вне форума Ответить с цитированием
Старый 01.11.2009, 17:52   #13
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

OCTAGRAM, может все дерективы перечислить.. авось шото нужное попадется??

для чего использовать {$R+} если у меня задан размер массива и счетчик изменяется от первого до последнего его элемента.. не более..
и {$Q+} тоже для чего если счетчик у меня имеет тип Integer и его значеия изменяется от 0 до 4.. шо никак не может привести к переполнению..

??
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 01.11.2009, 18:17   #14
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Скучно стало читать все это - взял да и проверил.
Что с оптимизацией, что без нее - 0,1,2,3,4.
Так что глюк стоит поискать где-то рядом, и поскольку топикстартер стесняется привести всю процедуру, то остается в очередной раз признаться в своей непринадлежности к славному отряду телепатов...
mihali4 вне форума Ответить с цитированием
Старый 01.11.2009, 18:30   #15
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

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

Код:
type
  TDataStruct = packed record
    FileName:String;
    FilNum:cardinal;
    Size:cardinal;
    Typ:Byte;
    Offset:cardinal;
    LastOffset:cardinal;
  end;
  TBlockInfo = packed record
    IndCoord:Word;
    StartTime:TDateTime;
    EndTime:TDateTime;
  end;
  TBlok = packed record
    Name:String;
    Inf:TBlockInfo;
    Activate:Boolean;
    Data: array of TDataStruct;
  end;
***
var
  Form1: TForm1;
  FilList:array [0..3] of TBlok;
***
procedure TForm1.Button1Click(Sender: TObject);
var byf: array of Byte;
    f, f1, br:cardinal;
    i, j, k:integer;
    siz, pos:cardinal;
    List:array of TDataStruct;
    s: String;
begin
if (Edit1.Text='')or
   (Edit2.Text='')or
   (Edit2.Text='')or
   (Edit3.Text='')or
   (Edit4.Text='')or
   (Edit5.Text='')or
   (Edit6.Text='')or
   (Edit7.Text='')
  then begin
   ShowMessage('Не все поля заполнены');
   exit;
  end;

//узнаем длинну заголовка

s:='какаято строка';
siz:=Length(s);

for i:=0 to 3 do
  if FilList[i].Activate
    then inc(siz, (3+Length(FilList[i].Name)+Length(FilList[i].Data)*5));
SetLength(byf, siz);
pos:=0;

//пишем строку
Move(s[1], byf[pos], Length(s));
inc(pos, Length(s));
//заголовки блоков 1..4
for i:=0 to 3 do
  if FilList[i].Activate
    then begin
      s:=FilList[i].Name;
      byf[pos]:=Length(s);
      inc(pos);
      Move(s[1], byf[pos], Length(s));
      inc(pos, Length(s));
      siz:=Length(FilList[i].Data);
      Move(siz, byf[pos], 2);
      inc(pos, 2);
      for j:=0 to Length(FilList[i].Data)-1 do
        FilList[i].Data[j].LastOffset:=pos;
// оставляем место под данные блока
      inc(pos, siz*5);
    end;

f:=CreateFile('1.dat', GENERIC_ALL, FILE_SHARE_WRITE, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
WriteFile(f, byf[0], Length(byf), br, nil);
//обнуляем буфер
SetLength(byf, 0);

//кешируем файлы из 4-х сисков в 1
siz:=0;
for i:=0 to 3 do
  if FilList[i].Activate
    then inc(siz, Length(FilList[i].Data));

SetLength(List, siz);
j:=0;
for k:=0 to 3 do
  if FilList[k].Activate
    then begin
      for i:=0 to Length(FilList[k].Data)-1 do
        List[i+j]:=FilList[k].Data[i];
      inc(j, Length(FilList[k].Data));
    end;

Randomize;

while Length(List) > 0 do
  begin
    //чото делаем уменьшая длинну листа
  end;

CloseHandle(f);
end;
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 01.11.2009, 23:24   #16
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я считаю это всетаки оптимизацией...просто сами строки например показать i(по смыслу пишу...но это именно код) просто эта самая переменная(которая обратная) преобразуется в прямой вид.

разница есть на уровне асма...ибо
цикл loop идет.(именно он на обратном отсчете)
а не ветвление.

вопрос такой, не взирая на обратный отсчет, код верно отрабатывает?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.11.2009, 00:36   #17
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

я в посте #5 писал об этом.. из-за неверного индекса не в той последовательности записываются данные, соответственно их становится невозможно прочитать, т.к. структура данных динамическая, а не статическая..
про "цикл loop".. это интересно.. сейчас почитаю...
(Боремся за чистоту русского, великого и могучего)
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"

Последний раз редактировалось mihali4; 02.11.2009 в 00:59.
Ntlegend вне форума Ответить с цитированием
Старый 02.11.2009, 00:59   #18
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
из-за неверного индекса не в той последовательности записываются данные
видимо глюк оптимизации...
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Счетчик в Паскале NSvirus Паскаль, Turbo Pascal, PascalABC.NET 2 18.05.2009 13:06
счетчик Dimati87 Microsoft Office Excel 3 09.04.2009 10:02
счетчик страниц Bogood Помощь студентам 2 07.03.2009 21:44
Размер Image изменяется на размер картинки, а сама она рисуется на области первой картинки RPGer Мультимедиа в Delphi 6 20.10.2008 19:54