Вверх ↑
Этот топик читают: Гость
Гость
Ответов: 17029
Рейтинг: 0
#316: 2013-10-25 02:56:11 правка | ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2017-06-21 00:40:30
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#317: 2013-10-25 03:01:24 правка | ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2017-06-21 00:40:30
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#318: 2013-10-25 04:10:48 правка | ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2017-06-21 00:40:32
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#319: 2013-11-11 22:13:40 правка | ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2017-06-21 00:40:33
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#320: 2013-11-11 22:18:42 правка | ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2017-06-21 00:40:34
карма: 0

0
Ответов: 9810
Рейтинг: 340
#321: 2013-11-11 22:24:13 ЛС | профиль | цитата
Поручик - МОЛЧАТЬ
карма: 8

0
Гость
Ответов: 17029
Рейтинг: 0
#322: 2013-11-13 03:07:33 правка | ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2017-06-21 00:40:34
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#323: 2013-11-15 01:13:30 правка | ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2017-06-21 00:40:35
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#324: 2013-11-15 01:15:25 правка | ЛС | профиль | цитата


Редактировалось 5 раз(а), последний 2017-06-21 00:40:35
карма: 0

0
Ответов: 1303
Рейтинг: 405
#325: 2015-01-08 23:55:01 ЛС | профиль | цитата
Подскажите пожалуйста где ошибка и "как" исправить
Суть проблемы есть переменная тип запись с полями из динамических массивов, ну так вот надо одну переменную присвоить другой и так два раза, а получается присвоить только один раз . Схема должна выдать 3, а выдаёт 30 как будто второго присваивания не было.
.. бли комом, схема умерла в момент сохранения
.. востановил
Add(MainForm,2953706,35,77)
{
}
Add(InlineCode,8359693,140,77)
{
WorkPoints=#6:doFunc|
EventPoints=#7:onFunc0|7:onFunc1|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|31:uses Kol, Share, Debug, OpenGL;|0:|4:type|52: TCoord = record // Stores X, Y, Z coordinates|21: X, Y, Z: glFLoat;|6: end;|0:|4:type|52: TTexCoord = record // Stores texture coordinates|18: U, V: glFloat;|6: end;|0:|4:type|45: TColorCoord = record // Stores value color|21: R, G, B: GLubyte;|6: end;|0:|0:|4:type|16: TMesh = record|26: ModelName: string[80];|26: GroupName: string[80];|20: CountV: integer;|22: PrimType: integer;|33: idTexture1: array of integer;|33: idTexture2: array of integer;|54: Vertexes: array of TCoord;//----------------------|29: Normals: array of TCoord;|34: Textures1: array of TTexCoord;|34: Textures2: array of TTexCoord;|34: Textures3: array of TTexCoord;|34: Textures4: array of TTexCoord;|32: Color: array of TColorCoord;|6: end;|0:|4:type|19: TArrMesh = record|38: DynamicModeFlag: array of boolean;|34: NormalsFlag: array of boolean;|35: TexturesFlag: array of boolean;|36: nTexturesFlag: array of integer;|32: ColorFlag: array of boolean;|29: IdVAOA: array of integer;|29: IdVAOB: array of integer;|31: MeshGroupA: array of TMesh;|31: MeshGroupB: array of TMesh;|6: end;|0:|3:var|19: Mesh0: TMesh; //|15: Mesh1: TMesh;|0:|4:type|29: THiAsmClass = class(TDebug)|9: private|0:|8: public|23: onFunc0: THI_Event;|23: onFunc1: THI_Event;|0:|51: procedure doFunc(var Data: TData; index: word);|6: end;|0:|48:function SetLengthMesh(Count: integer): boolean;|41:function DelMeshID(id: integer): boolean;|0:|14:implementation|0:|48:function SetLengthMesh(Count: integer): boolean;|0:|5:begin|17: Result := True;|4:end;|0:|41:function DelMeshID(id: integer): boolean;|0:|5:begin|17: Result := True;|4:end;|0:|59:procedure THiAsmClass.doFunc(var Data: TData; index: word);|3:var|25: Id, CountV, i: integer;|5:begin|10: Id := 0;|15: CountV := 10;|32: SetLength(Mesh0.Vertexes, 10);|32: SetLength(Mesh1.Vertexes, 10);|0:|29: for i := 0 to CountV - 1 do|7: begin|29: Mesh0.Vertexes[i].X := 1;|29: Mesh0.Vertexes[i].Y := 2;|52: Mesh0.Vertexes[i].Z := 3;//Mesh0.Vertexes[0].Z=3|6: end;|0:|41: Mesh1 := Mesh0; //Mesh1.Vertexes[0].Z=3|2: |29: for i := 0 to CountV - 1 do|7: begin|30: Mesh1.Vertexes[i].X := 10;|30: Mesh1.Vertexes[i].Y := 20;|55: Mesh1.Vertexes[i].Z := 30; //Mesh1.Vertexes[0].Z=30|8: end; |2: |0:|46: Mesh1 := Mesh0; //Mesh1.Vertexes[1].Z <> 3 ?|2: |47: //_hi_OnEvent(onFunc0, high(Mesh1.Vertexes));|44: _hi_OnEvent(onFunc1, Mesh1.Vertexes[0].Z);|4:end;|0:|4:end.|
link(onFunc0,2470084:doText,[])
link(onFunc1,4431543:doText,[(198,90)(198,125)])
}
Add(Label,2470084,224,77)
{
Left=175
Top=25
}
Add(Label,4431543,224,119)
{
Left=95
Top=25
}
Add(Button,2721913,84,77)
{
Left=20
Top=20
link(onClick,8359693:doFunc,[])
}



карма: 3

0
Ответов: 194
Рейтинг: 42
#326: 2015-01-09 00:38:28 ЛС | профиль | цитата
MAV, присваивание то есть, только выводится последнее. Если нужно и первое вывести, то добавить ещё раз вызов события.

карма: 1

0
Ответов: 8325
Рейтинг: 775
#327: 2015-01-09 00:48:02 ЛС | профиль | цитата
MAV, массив создан один, а запись в него дважды, последняя и высвечивается
code_34868.txt
Присвоение.jpg
карма: 14

0
файлы: 2Присвоение.jpg [18.6KB] [256], code_34868.txt [399B] [112]
Ответов: 1757
Рейтинг: 604
#328: 2015-01-09 00:50:30 ЛС | профиль | цитата
MAV, насколько понимаю код, то ваши Mesh0 и Mesh1 после:
#pas
Mesh1 := Mesh0;
стали близнецами, получили одни и те же адреса памяти. Так что изменяя Mesh1 вы изменяете и Mesh0:
unit HiAsmUnit;

interface

uses Kol, Share, Debug, OpenGL;

type
TCoord = record // Stores X, Y, Z coordinates
X, Y, Z: glFLoat;
end;

type
TTexCoord = record // Stores texture coordinates
U, V: glFloat;
end;

type
TColorCoord = record // Stores value color
R, G, B: GLubyte;
end;


type
TMesh = record
ModelName: string[80];
GroupName: string[80];
CountV: integer;
PrimType: integer;
idTexture1: array of integer;
idTexture2: array of integer;
Vertexes: array of TCoord;//----------------------
Normals: array of TCoord;
Textures1: array of TTexCoord;
Textures2: array of TTexCoord;
Textures3: array of TTexCoord;
Textures4: array of TTexCoord;
Color: array of TColorCoord;
end;

type
TArrMesh = record
DynamicModeFlag: array of boolean;
NormalsFlag: array of boolean;
TexturesFlag: array of boolean;
nTexturesFlag: array of integer;
ColorFlag: array of boolean;
IdVAOA: array of integer;
IdVAOB: array of integer;
MeshGroupA: array of TMesh;
MeshGroupB: array of TMesh;
end;

var
Mesh0: TMesh; //iniiaiie iannea iaoae
Mesh1: TMesh;
Mesh2: TMesh;
VertexCube: array of TCoord;
NormalsCube: array of TCoord;
TexCoordsCube: array of TTexCoord;


type
THiAsmClass = class(TDebug)
private

public
onFunc0: THI_Event;
onFunc1: THI_Event;

procedure doFunc(var Data: TData; index: word);
end;

function SetLengthMesh(Count: integer): boolean;
function DelMeshID(id: integer): boolean;

implementation

function SetLengthMesh(Count: integer): boolean;

begin
Result := True;
end;

function DelMeshID(id: integer): boolean;

begin
Result := True;
end;

procedure THiAsmClass.doFunc(var Data: TData; index: word);
var
Id, CountV, i: integer;
begin
Id := 0;
CountV := 10;
SetLength(Mesh0.Vertexes, 10);
SetLength(Mesh1.Vertexes, 10);

for i := 0 to CountV - 1 do
begin
Mesh0.Vertexes[i].X := 1;
Mesh0.Vertexes[i].Y := 2;
Mesh0.Vertexes[i].Z := 3;//Mesh0.Vertexes[0].Z=3
end;
Mesh1 := Mesh0; //Mesh1.Vertexes[0].Z=3

for i := 0 to CountV - 1 do
begin
Mesh1.Vertexes[i].X := 10;
Mesh1.Vertexes[i].Y := 20;
Mesh1.Vertexes[i].Z := 30; //Mesh1.Vertexes[0].Z=30
end;
_debug(double2str(Mesh0.Vertexes[0].Z));
_debug(double2str(Mesh1.Vertexes[0].Z));
Mesh1.Vertexes := nil;
//SetLength(Mesh1.Vertexes, 10);
Mesh1 := Mesh0; //??? //Mesh1.Vertexes[1].Z <> 3 ????

//_hi_OnEvent(onFunc0, high(Mesh1.Vertexes));
_hi_OnEvent(onFunc1, Mesh1.Vertexes[0].Z);
end;

end.
Если не ошибаюсь то решается это вот так:
code_34869.txt
Но могу ошибаться
карма: 7

1
файлы: 1code_34869.txt [3.2KB] [126]
Голосовали:MAV
Ответов: 1303
Рейтинг: 405
#329: 2015-01-09 01:14:08 ЛС | профиль | цитата
halt, спасибо за внимание, но как раз физического присваивания и не происходит, данный пример это конкретизация проблемки, суть в том что механизм построения модели требует занести в глобальную переменную начальные значения, далее в другом юните происходит просчёт параметов, далее вычеслеными даными необходимо заменить начальные, если ряд условий не выполнен, заменить начальными данными, во тут уже картина Репина.
Должно в итоге быть
3
3
code_34870.txt
карма: 3

0
файлы: 1code_34870.txt [3KB] [140]
Ответов: 194
Рейтинг: 42
#330: 2015-01-09 01:17:13 ЛС | профиль | цитата
MAV, да я уж понял, что погорячился . Видимо уже глаза слипаются.
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)