Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lazarus
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Evstigor
0 / 0 / 0
Регистрация: 17.01.2013
Сообщений: 6
1

Ошибка "несоответствие типов" при компиляции приложения

21.04.2013, 01:49. Просмотров 1105. Ответов 1
Метки нет (Все метки)

При попытке создания dll выдает ошибку Type mismatch в строках: setlength(Track,length(Track)+2);
В итоге dll должна выдавать массив значений K,T, J
Буду благодарен за помощь
Код dll:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
library project3;
 
{$mode objfpc}{$H+}
 
uses
  Classes, SysUtils, Dialogs
  { you can add units after this };
  {function DLLArtura}
type
TTrackPoint=record
    K,T:double;
    J:double;
end;
 
function GetOptimTrack(min,max,e:TTrackPoint; var Track: array of TTrackPoint):double; stdcall; export;
    var
      JoptK,JoptT,Kopt,Kfix:double;
      a,b: double;
      kkk,x1,x2,f1,f2: real;
      begin
 
a:=min.K; b:=max.K;
        kkk:=(sqrt(5)-1)/2;
        x1:=b-(b-a)/kkk;
        x2:=b+a-x1;
        f1:=5;
        f2:=3;
        setlength(Track,length(Track)+2);
        Track[high(Track)-1].K:=x1;
        Track[high(Track)].K:=x2;
        Track[high(Track)-1].J:=f1;
        Track[high(Track)].J:=f2;
        while abs(x1-x2)<e.k do begin
          if f1>f2 then begin
            a:=x1; x1:=x2; f1:=f2;
            x2:=b+a-x1;
            f2:=3;
            setlength(Track, length(Track)+2);
            Track[high(Track)-1].K:=x1;
            Track[high(Track)].K:=x2;
            Track[high(Track)-1].J:=f1;
            Track[high(Track)].J:=f2;
            end
          else begin
            b:=x2; x2:=x1; f2:=f1;
            x1:=b-(b-a)/kkk;
            f1:=5;
            setlength(Track, length(Track)+2);
            Track[high(Track)-1].K:=x1;
            Track[high(Track)].K:=x2;
            Track[high(Track)-1].J:=f1;
            Track[high(Track)].J:=f2;
          end;
            end;
            result:=(x1+x2)/2;
            Kopt:=result;
            Track[high(Track)].k:=result;
            JoptK:=2;
            Kfix:=Kopt;
a:=min.T; b:=max.T;
        kkk:=(sqrt(5)-1)/2;
        x1:=b-(b-a)/kkk;
        x2:=b+a-x1;
        f1:=3;
        f2:=5;
        setlength(Track, length(Track)+2);
        Track[high(Track)-1].T:=x1;
        Track[high(Track)].T:=x2;
        Track[high(Track)-1].J:=f1;
        Track[high(Track)].J:=f2;
        while abs(x1-x2)<e.k do begin
          if f1>f2 then begin
            a:=x1; x1:=x2; f1:=f2;
            x2:=b+a-x1;
            f2:=5;
            setlength(Track, length(Track)+2);
            Track[high(Track)-1].T:=x1;
            Track[high(Track)].T:=x2;
            Track[high(Track)-1].J:=f1;
            Track[high(Track)].J:=f2;
            end
          else
          begin
            b:=x2; x2:=x1; f2:=f1;
            x1:=b-(b-a)/kkk;
            f1:=3;
            setlength(Track, length(Track)+2);
            Track[high(Track)-1].T:=x1;
            Track[high(Track)].T:=x2;
            Track[high(Track)-1].J:=f1;
            Track[high(Track)].J:=f2;
          end;
            end;
            result:=(x1+x2)/2;
            Track[high(Track)].T:=result;
            JoptT:=3;
            if JoptK<JoptT then Track[high(Track)].J:=JoptK
            else      Track[high(Track)].J:=JoptT;
 
          end;
exports  GetOptimTrack;
begin
end.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2013, 01:49
Ответы с готовыми решениями:

Объектно-ориентированное программирование. Описание автомобиля. Ошибка компиляции: identifier idents no member "."
Lazarus. Описать так: Бак - предок двигателя; двигатель - авто. Авто я пока не использовал в...

Ошибка "Fatal: Syntax error, ";" expected but "." found"
звучит задание: создай программу, в которой можно преподнести введенное пользователем число к...

Ошибка "record, object of file type required" при компиляции
При компиляции выдает ошибку &quot;record, object of file type required&quot;,выделяет последнюю строку с...

Ошибка после компиляции "Exception EClassNotFound" in module Con.exe at 000B1232
Возникла ситуация. Учусь в магистратуре ИТфакультета но программировать не умею вообще, не...

Слет приложения при "фотографировании" экрана
День добрый Господа. Тут такое дело. У меня есть программа, на ней есть кнопка. В кнопке такой код:...

1
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
27547 / 18458 / 7295
Регистрация: 22.10.2011
Сообщений: 32,440
Записей в блоге: 6
21.04.2013, 09:55 2
К открытым массивам (а переданный в функцию Track - это не динамический, а именно открытый массив, это разные вещи) SetLength неприменима.

Pascal
1
2
3
4
5
6
7
8
type
TTrackPoint=record
    K,T:double;
    J:double;
end;
TrackPointArray = array of TTrackPoint;
 
function GetOptimTrack(min,max,e:TTrackPoint; var Track: TrackPointArray):double; stdcall; export;
, вот теперь это динамический массив...

Ну, а о том, что такую DLL можно будет использовать только из Лазаруса, ты наверняка знаешь. Другие языки понятия не имеют об особенностях реализации динамических массивов.
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2013, 09:55

Ошибка: project1.lpr(1,1) Fatal: Syntax error, "BEGIN" expected but "end of file" found
project1.lpr(1,1) Fatal: Syntax error, &quot;BEGIN&quot; expected but &quot;end of file&quot; found выдает эту ошибку...

Ошибка: Fatal: Syntax error, ";" expected but "identifier Mas" found.
Где здесь синтаксическая ошибка( &quot;mas:=A2;&quot; )? procedure TForm1.Button1Click(Sender: TObject); ...

ошибка Error: Incompatible type for arg no. 1: Got "TRawbyteSearchRec", expected "LongWord"
Здравствуйте дорогие форумчанины. В данном коде выходит ошибка unit1.pas(101,24) Error:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru