Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

БАЗЫ И ВЫСШАЯ МАТЕМАТИКА [D6, Access]


Страницы:   1 2

Галинка ©   (2004-05-14 07:56:00) 

Есть очень заумные формулы..:
j=1,N; i=1,l[j];
r0:=sqrt(sqr(x[i,j])+sqr(y[i,j]));
c1[i,j]:=sqr(0.08*(p1-I[i,j])-p2/Vozved(h,[j],p3));
fi[i,j]:=arctan(y[i,j]/x[i,j]);
c[i,j]:=c1[i,j]*sqr(cos(fi[i,j]-fi0))+sqr(sin(fi[i,j]-fi0));

b[1,1]:=b[1,1]+l[j];
b[2,1]=b[1,2]:=b[1,2]+l[j]*(K[j]-log(4*pi*sqr(r0)));
b[3,1]=b[1,3]:=b[1,3]-log(sqrt(sqr(h[j])+c[i,j]*(sqr(x[i,j])+sqr(y[i,j]))/r0);
b[2,2]:=b[2,2]+l[j]*sqr(K[j]-log(4*pi*sqr(r0)));
b[3,2]=b[2,3]:=b[2,3]-(K[j]-log(4*pi*sqr(r0)))*log(sqrt(sqr(h[j])+c[i,j]*(sqr(x[i,j])+sqr(y[i,j]))/r0);
b[3,3]:=sqr(log(sqrt(sqr(h[j])+c[i,j]*(sqr(x[i,j])+sqr(y[i,j]))/r0));
c[1]:=c[1]+I[i,j];
c[2]:=c[2]+I[i,j]*(K[j]-log(4*pi*sqr(r0)));
c[3]:=c[3]+I[i,j]*log(sqrt(sqr(h[j])+c[i,j]*(sqr(x[i,j])+sqr(y[i,j]))/r0);

Данные ко всему этому берутся из таблиц базы со структурой
Epicentry                Punkty_nabludeniya
Id_epic                  Id_epic
Data                     DelX
Time                     DelY
Shir_epic                Inabl
Dolg_epic
H_gip
K_max
Fi_0

Как это все можно реализовать ???

Всем спасибо....


Argon   (2004-05-14 22:18:00) [1]

Не стоит пользоваться
for k:=0 to DBGrid1.DataSource.DataSet.RecordCount-1 do
RecordCount имеет свойство иметь значение строки на которой случайно стоит, лучше использовать
While not DBGrid1.DataSource.DataSet.Eof do
тогда все четко будет


MU   (2004-05-14 15:29:00) [2]

1. В Вашем коде записи в DBGrid2 должны быть отсортированы по полю Field[0]. Это так?
2. FindNext - тоже самое, что и Next
3. Вставьте перед циклом
DBGrid2.DataSource.DataSet.LocateDBGrid1.DataSource.DataSet.Fields[0].Name, [DBGrid1.DataSource.DataSet.Fields[0].AsInteger], []);
while (DBGrid1.DataSource.DataSet.Fields[0].AsInteger=
                DBGrid2.DataSource.DataSet.Fields[0].AsInteger) do


MU   (2004-05-14 15:03:00) [3]

Удалено модератором
Примечание: дубль


MU   (2004-05-14 15:03:00) [4]

ParamZeml[k].Fi0:=DBGrid1.DataSource.DataSet.Fields[7].AsFloat;
DBGrid2.DataSource.DataSet.Locate(...)
with DBGrid2.DataSource.DataSet do
...


Petr V. Abramov   (2004-05-14 14:59:00) [5]

лучше сначала с в массивы все перегнать.


Галинка   (2004-05-14 14:51:00) [6]

2 sniknik Глюк как раз со второй таблицей...


Галинка   (2004-05-14 14:44:00) [7]

2 Sniknik

Так тоже было... Вроде тоже глючит


sniknik   (2004-05-14 14:41:00) [8]

FindFirst -> First
FindNext -> Next

for k:=0 to DBGrid1.DataSource.DataSet.RecordCount-1 do ->
while not DBGrid1.DataSource.DataSet.EOF

конечно если я правильно понял "глюк".


Галинка   (2004-05-14 14:28:00) [9]


procedure TForm1.Button1Click(Sender: TObject);
var
 i, j, k: Integer;
 s: string;

begin
   i:=1;
   DBGrid1.DataSource.DataSet.FindFirst;
   DBGrid2.DataSource.DataSet.FindFirst;
   FieldNames:=DBGrid2.DataSource.DataSet.FieldList;
   SetLength(ParamZeml,DBGrid1.DataSource.DataSet.RecordCount);
   SetLength(ParamPunkty,DBGrid1.DataSource.DataSet.RecordCount);
   for k:=0 to DBGrid1.DataSource.DataSet.RecordCount-1 do
    begin
     if k>0 then DBGrid1.DataSource.DataSet.FindNext;
       ParamZeml[k].XEpic:=DBGrid1.DataSource.DataSet.Fields[3].AsFloat;
       ParamZeml[k].YEpic:=DBGrid1.DataSource.DataSet.Fields[4].AsFloat;
       ParamZeml[k].Hgip:=DBGrid1.DataSource.DataSet.Fields[5].AsFloat;
       ParamZeml[k].Kmax:=DBGrid1.DataSource.DataSet.Fields[6].AsFloat;
       ParamZeml[k].Fi0:=DBGrid1.DataSource.DataSet.Fields[7].AsFloat;
       with DBGrid2.DataSource.DataSet do
        begin
          while (DBGrid1.DataSource.DataSet.Fields[0].AsInteger=
                 DBGrid2.DataSource.DataSet.Fields[0].AsInteger) do
           begin
            SetLength(ParamZeml[k].Punkty,i);
            if i>1 then FindNext;
            for j:=2 to FieldNames.Count-1 do
             begin
              ParamZeml[k].Punkty[i-1,j-1]:=Fields[j].AsFloat;
              s:=s+Fields[j].AsString+'  ';
             end;
            ListBox1.Items.Add(s);
            s:='';
            inc(i);
           end;
        end;
    end;
end;


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


Галинка   (2004-05-14 14:26:00) [10]

Удалено модератором


Галинка   (2004-05-14 14:25:00) [11]


procedure TForm1.Button1Click(Sender: TObject);
var
 i, j, k: Integer;
 s: string;

begin
   i:=1;
   DBGrid1.DataSource.DataSet.FindFirst;
   DBGrid2.DataSource.DataSet.FindFirst;
   FieldNames:=DBGrid2.DataSource.DataSet.FieldList;
   SetLength(ParamZeml,DBGrid1.DataSource.DataSet.RecordCount);
   SetLength(ParamPunkty,DBGrid1.DataSource.DataSet.RecordCount);
   for k:=0 to DBGrid1.DataSource.DataSet.RecordCount-1 do
    begin
     if k>0 then DBGrid1.DataSource.DataSet.FindNext;
       ParamZeml[k].XEpic:=DBGrid1.DataSource.DataSet.Fields[3].AsFloat;
       ParamZeml[k].YEpic:=DBGrid1.DataSource.DataSet.Fields[4].AsFloat;
       ParamZeml[k].Hgip:=DBGrid1.DataSource.DataSet.Fields[5].AsFloat;
       ParamZeml[k].Kmax:=DBGrid1.DataSource.DataSet.Fields[6].AsFloat;
       ParamZeml[k].Fi0:=DBGrid1.DataSource.DataSet.Fields[7].AsFloat;
       with DBGrid2.DataSource.DataSet do
        begin
          while (DBGrid1.DataSource.DataSet.Fields[0].AsInteger=
                 DBGrid2.DataSource.DataSet.Fields[0].AsInteger) do
           begin
            SetLength(ParamZeml[k].Punkty,i);
            if i>1 then FindNext;
            for j:=2 to FieldNames.Count-1 do
             begin
              ParamZeml[k].Punkty[i-1,j-1]:=Fields[j].AsFloat;
              s:=s+Fields[j].AsString+'  ';
             end;
            ListBox1.Items.Add(s);
            s:='';
            inc(i);
           end;
        end;
    end;
end;


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


Sly   (2004-05-14 12:26:00) [12]

2 Галинка ©
Уж не площади ли полигонов ищем?


han_malign   (2004-05-14 11:36:00) [13]

> ВЫСШАЯ МАТЕМАТИКА
- вообще это школьная геометрия(точнее стереометрия), но это вам на форум геодезистов
> БАЗЫ
 для каждого Epicentry[j] находим все Punkty_nabludeniya[i] где Punkty_nabludeniya[i].Id_epic=Epicentry[j].Id_epic - вот вам и [i,j], а дальше к бейзистам, я в БД не силен... (хотя здесь простенький SELECT, возможно JOIN)


BillyJeans   (2004-05-14 10:38:00) [14]

DataBase.First;
While not DataBase.EOF do begin
 h[j] := FieldByName('H_gip').AsInteger;
 <...>
 inc(j);
 DataBase.Next;
end;
<формулы...>


Галинка   (2004-05-14 10:33:00) [15]

Для BillyJeans

Решить суммы (первый топик)..


BillyJeans   (2004-05-14 10:26:00) [16]

а что нужно реализовать то?


Галинка   (2004-05-14 10:10:00) [17]

Для Наталии
Можете представить приерный цикл?


jack128   (2004-05-14 09:13:00) [18]

нету тут высшей математики. если Vozved - это возведение степень , то лудше используй Power из модуля Math


Anatoly Podgoretsky   (2004-05-14 09:11:00) [19]

Данные из таблиц берутся или с помощью FieldByName или Fields[I] или и постоянно созданых полей (на этапе программирования) и используюся напрямую или помещаются во временные переменные, расчеты проводятся обычным путем


Наталия   (2004-05-14 09:01:00) [20]

Я же не телепат...
А в чем трудность то?
На каком этапе она возникает?
При выборке  данных? Подстановке в формулы?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо