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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2011, 16:44   #11
SonicBob
Форумчанин
 
Регистрация: 30.05.2011
Сообщений: 133
По умолчанию

Цитата:
Сообщение от Zer0 Посмотреть сообщение
прямо таки комп? или программу?)
да ты прав только прогу просто уже бесило что не могу понять причину
Цитата:
Сообщение от Stilet Посмотреть сообщение
Обьясни зачем тебе нужны эти сравнения.
даны 2 пачки координат, надо произвести сравнение высот изменение высот со временем, но для того что б адекватно сравнить изменение высот со временем мне надо произвести сравнение координат X и Y если X Y из разных пачек совпадают то идёт сравнение высот, вот ради этого все и задумано.
Цитата:
Сообщение от evg_m Посмотреть сообщение
ни один из операторов for не имеет операторных скобок (begin end) Значит:
в циклы включен ТОЛЬКО один оператор
анализ происходит ПОСЛЕ циклов.
в анализе участвуют только ПОСЛЕДНИЕ в в списке.
далее аналогично.
можно на примере как должно быть правильно сделано

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

Последний раз редактировалось SonicBob; 02.08.2011 в 16:58.
SonicBob вне форума Ответить с цитированием
Старый 02.08.2011, 18:04   #12
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

ну в таком случае все просто - много вычислений, и пока программа не закончит - реагировать не будет, как решение - распаралеллить вычисления и вывести их в отдельный поток
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 03.08.2011, 01:42   #13
SonicBob
Форумчанин
 
Регистрация: 30.05.2011
Сообщений: 133
По умолчанию

Цитата:
Сообщение от Zer0 Посмотреть сообщение
ну в таком случае все просто - много вычислений, и пока программа не закончит - реагировать не будет, как решение - распаралеллить вычисления и вывести их в отдельный поток
application.ProcessMessages; добавил это визуально программа перестала виснуть, но при этом закрыть программу получается только через диспечер и завершение процесса, добавил еще счетчик пройденных строк вычисления идёт, а вот как сделать это потом была такая идея тк слышал это уменьшит нагрузку, и вабще что из себя поток представляет?

Последний раз редактировалось SonicBob; 03.08.2011 в 02:03.
SonicBob вне форума Ответить с цитированием
Старый 03.08.2011, 03:21   #14
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

processMessages всего лишь дает приложению указание обрабатывать системные сообщения дальше (ресайз окна, перемещение и проч)

про потоки можете почитать здесь: http://www.delphimaster.ru/articles/thread/index.html
по факту это создание дочернего потока в процессе, которое будет обрабатываться "параллельно" (с точки зрения пользователя)
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 03.08.2011, 11:52   #15
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Цитата:
Цитата:
Сообщение от evg_m Посмотреть сообщение
ни один из операторов for не имеет операторных скобок (begin end) Значит:
в циклы включен ТОЛЬКО один оператор
анализ происходит ПОСЛЕ циклов.
в анализе участвуют только ПОСЛЕДНИЕ в в списке.
далее аналогично.
можно на примере как должно быть правильно сделано
добавить операторные скобки BEGIN END в начале и конце цикла
Код:
for j:=1 to nnn do BEGIN
  // все что хотим (к примеру так)
  if a>b then c:=7;
  if d=7 then begin 
    a:=r+8*g;
    s:='проба';
  end;
END;
Цитата:
даны 2 пачки координат, надо произвести сравнение высот изменение высот со временем, но для того что б адекватно сравнить изменение высот со временем мне надо произвести сравнение координат X и Y если X Y из разных пачек совпадают то идёт сравнение высот, вот ради этого все и задумано.
т.е. в пачке координаты XY постоянны?
сравнение XY между пачками точное (без отклонений)?
Цитата:
и вабще если кто то понял что я пытаюсь сделать и знает как это лучше сделать напишите а то мое творение явный бред
неплохо было бы привести примеры пачек подлежащих сравнению и не подлежащих сравнению.
Для ускорению работ не вредно отказаться от визуальных(читай текстовых) компонент и работать с ЧИСЛОВЫМИ массивами. (избавиться от бесконечных strtofloat).

и вообще начать с того что объяснить что же такое пачка.
например так
это набор трех координат (XYZ) в заданный момент времени.
тогда задача возможно формулируется так найти в различных пачках одинаковые координаты(XY) и что там сделать с координатой Z.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 03.08.2011 в 12:21.
evg_m вне форума Ответить с цитированием
Старый 03.08.2011, 15:55   #16
SonicBob
Форумчанин
 
Регистрация: 30.05.2011
Сообщений: 133
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
вот так это примерно выглядит
Код:
 359.5083 -10.1054    -15.70
 359.5250 -10.1054    -15.30
 359.5417 -10.1054    -16.00
Код:
 359.5083 -10.1054    -16.70
 359.5250 -10.1054    -18.30
 359.5417 -10.1054    -16.50
просто взял первые 3 строки из блоков минимум по 5000,
я решил сначала прежде чем начинать сравнивать Z, сделать проверку с одинаковых ли координат берется Z если нет то идёт прерывание, для этого написал 2 цикла на построчное сравнение X и Y но вышло нечто тормозное если количесвто строк больше 200 о мгновенном результате можно забыть навсегда а проверка 5000 строк занимает примерно около часа примерно(явно не удобно) при этом можно делать другие вычисления , но закрыть программу не реально
SonicBob вне форума Ответить с цитированием
Старый 03.08.2011, 17:56   #17
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Код:
type
Tmas =array of record X,Y,Z: float end; 

procedure LoadFromList(lst: TstringList; var mas: Tmas);
begin
  setlength(m1, lst.count);
  for jj:=0 to lst.count-1 do begin
    s:=lst.strings[jj];
//пример надо позиции настроить на правильный формат файла
    m[j,jj].X:=strtofloat(copy(s,1,10));
    m[j,jj].Y:=strtofloat(copy(s,11,10));
    m[j,jj].Z:=strtofloat(copy(s,21,10));
  end;
end;

// сравнение массивов
// исходная задача неясна поэтому просто ищем в хотя бы одно совпадение XY в двух массивах.
  function CompareMas(m1, m2: TMAs): boolean;
  begin
     result:=flase;
     for l1:=0 to length(m1) do begin
        for l2:=0 to length(m2) do begin
           if (m1[l1].x =m2[l2].X) and (m1[l1].Y =m2[l2].Y) then begin
                result:=true;
                break;
           end;
        end;
        if result then break;
      end;
  end;

// подготовка проведена (процедуры написаны)
// теперь работаем
 
var
  m1, m2: TMAs;
var
  lst: TStringList;

  lst:=TstringList.Create;
  lst.LoadFormFile(f1); 
  loadFormList(lst, m1); //получили первый массив
  lst.LoadFromfile(f2);
  LoadFromList(lst, m2); // получили второй массив

  if compareMAs(m1, m2) then showmessage('УРА НАШЛИ ПАРУ!');
// проверили ЕСТЬ ЛИ ПАРА
P.S. в задаче понимания больше не стало
поэтому просто пример загрузки разбора файла без Listbox-ов.

Цитата:
и вообще начать с того что объяснить что же такое пачка.
видим три координаты (XYZ), а чем одна отличается от другой.
какой результат должен быть получен.
Цитата:
примеры пачек подлежащих сравнению и не подлежащих сравнению.
критерий успеха для дальнейшей обработки.
или попытаться объяснить задачу на уже приведенном примере.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 03.08.2011 в 18:06.
evg_m вне форума Ответить с цитированием
Старый 06.08.2011, 10:13   #18
SonicBob
Форумчанин
 
Регистрация: 30.05.2011
Сообщений: 133
По умолчанию

решил все же сделать это через поток, почитал вроде понял но жалуется на одну строчку(пока что на одну =)) её сделал красной, уже перепробовал все что знал но так и не понял как устранить ошибку

Код:
procedure TForm1.Button29Click(Sender: TObject);
var
m1,m2,m3:array of array of integer;
n,i,j,l,p:integer;
mc1,mc2:Double;//real;

begin
panel25.Visible:=false;
panel26.Visible:=true;
label72.Visible:=true;
label75.Visible:=true;

begin//ìàñèâ íîìåð 1 (z1)
n:=ListBox1.Items.Count;
setlength(m1,n,n) ;
for i:=0 to n-1 do
for j:=0 to 0 do
for p:=0 to ListBox4.Items.count-1 do
begin
m1[i,j]:=strtoint( ListBox4.Items.strings[p]);
//for i:=0 to n-1 do //ëèøíèå
mc1:=(m1[i,j]);
end;
end;

begin//ìàñèâ íîìåð 2 (z2)
n:=ListBox1.Items.Count;
setlength(m2,n,n) ;
for i:=0 to n-1 do
for j:=0 to 0 do
for p:=0 to ListBox3.Items.count-1 do
begin
m2[i,j]:=strtoint( ListBox14.Items.strings[p]);
//for i:=0 to ListBox14.Items.count-1 do
mc2:=(m2[i,j]);
end;
end;

m3[i,j]:=floattoint(sr) ; жалуется на эту строку 
T1 := TMyThread1.Create(False);
T2 := TMyThread2.Create(False);
ListBox19.Items.Add(inttostr(m3));
Count1:=ListBox19.Items.Count;
Label72.Caption:= IntToStr(Count1);
end;
Код:
procedure TMyThread2.DoWork;
var
n,i,j,l,p:integer;
mc1,mc2,sr:Double;//real;
m1,m2,m3:array of array of integer;

begin

sr:=(mc1)-(mc2);

end;
такой вопрос
1)как устронить ту ошибку
2.1)будет ли это работать вабще ?
2.2)получился ли у меня цикл что б проходил по всем строкам из исходного листа?
SonicBob вне форума Ответить с цитированием
Старый 06.08.2011, 11:01   #19
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
жалуется на эту строку
И что пишет? Кстати я лично такой функи не знаю среди стандартных... Если нужно преобразовать к целому то используй Trunc() или Round()
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.08.2011, 11:21   #20
SonicBob
Форумчанин
 
Регистрация: 30.05.2011
Сообщений: 133
По умолчанию

говорит undeclared idenfitifier 'floattoint'. если убрать то говорит что incompatible types 'integer' and 'double',
мне не нужно получать целое мне нужно что б точно то число которое получилось в результате вычитания переносилось в лист бокс19
SonicBob вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение в Excel whiteguru Microsoft Office Excel 3 06.07.2010 11:23
сравнение slavsmo Microsoft Office Excel 2 05.04.2010 17:51
C# сравнение слов Bobrik Помощь студентам 4 18.05.2009 17:57
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? Mclaren Помощь студентам 2 27.04.2009 22:37
Сравнение с таблицей Sanek777 Общие вопросы Delphi 0 26.09.2008 00:04