|
Вопрос # 5 091/ вопрос решён / |
|
Доброго времени суток, уважаемые эксперты!
Вот вроде все было хорошо, а тут опять на ровном месте...
Есть у меня двумерный байтовый массив или другими словами - массив векторов. Требуется передать какой-нибудь из векторов в подпрограмму. И что из этого получается. ( см. код )
Наверно, есть более цивилизованный способ передачи данных, не через Альпы, но я его пока не в курсе...
Приложение: Переключить в обычный режим- type
- BMas16 = array [0..15] of byte ;
- PB = ^Byte ;
- TForm1 = class(TForm)
- ..............................
- procedure OutMat( arrmas : PB );
- procedure FormClick(Sender: TObject);
-
- ...........................
- var
- Form1: TForm1;
- Wrk : array [0..17] of BMas4 ;
- Tmp : BMas16 ;
- JM,KM : array[0..3] of BMas16 ;
-
- ......................................
- procedure TForm1.FormClick(Sender: TObject);
- begin
- OutMat(@JM[1][0]) ;
- end;
-
-
- // S U B R O U T I N E S
-
- procedure TForm1.OutMat( Pmas : PB );
- var stro : string ; i,j,k : integer ;
- begin
- for j := 0 to 15 do begin Tmp[j] := ^Pmas ; Inc(Pmas) end ;
-
-
- end ;
-
- end.
-
 |
Вопрос задал: Толяныч (статус: 4-ый класс)
Вопрос отправлен: 16 марта 2011, 22:52
Состояние вопроса: решён, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 10; последнее сообщение — 18 марта 2011, 22:30; участников в обсуждении: 4.
|
DNK (статус: Студент), 16 марта 2011, 23:44 [#1]:
procedure TForm1.FormClick(Sender: TObject);
begin
OutMat(JM[1]) ;
end;
// S U B R O U T I N E S
procedure TForm1.OutMat(const Pmas : BMas16 );
var j: integer;
b: byte ;
begin
for j := 0 to 15 do begin
b := Pmas[j];
// И делаете с байтом, что хотите
end ;
end ;
"Digital Networked Knight"
|
|
Толяныч (статус: 4-ый класс), 17 марта 2011, 00:40 [#2]:
Действительно, работает - thanks !
Иногда простые решения бывают самыми эффективными.
Почему же на мой вариант ругается? Я ведь попросил - дай мне значение переменной, на которую указывает указатель, ничего боле.
|
17 марта 2011, 00:42: Статус вопроса изменён на решённый (изменил автор вопроса — Толяныч)
|
DNK (статус: Студент), 17 марта 2011, 00:50 [#3]:
А так?Tmp[j] := Pmas^;
"Digital Networked Knight"
|
|
Вадим К (статус: Академик), 17 марта 2011, 10:47 [#4]:
У каждого языка программирования есть своя идеология и методология. То, что в одном языке нормально, в другом может быть под запретом, а в третьем - смертный грех. (классический пример - goto. В ассемблере без него никак. В С - вполне себе, но часто можно без него. В С++ - уже нежелательный. В Java ключевое слово такое есть, но оно фейковое - использовать не получится, а в Python - уже нет такого, только есть эмуляция через библиотеки).
Смотря на код выше, понимаю, что написан он не на паскале, а на смеси Си и асма. Поэтому и сложно заставить работать.
В паскале/делфи можно абсолютно спокойно передавать массив в функцию/процедуру. И не нужно никаких изворотов с указателями. Единственное, что нельзя написать объявление функции так
function test(a:array[1..100] of integer):integer;
нужно только так
type mas = array[1..100] of integer;
function test(a:mas):integer;
то есть, только заведя свой тип.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Толяныч (статус: 4-ый класс), 17 марта 2011, 12:33 [#5]:
Да нет, спасибо DNK - все заработало. А то, что я начинал программирование на PC с 'С' - так это прорывается, как глухое 'г' у белоруса А вот после первого освоенного Алгол-60 на БЭСМ-6 паскалевские begin-end'ы и ':=' воспринимаются как родные, хотя сишные фигурные скобки для составных операторов меньше утомляют пальцы. А указателями решил побаловаться на случай динамических массивов, авось пригодится, но блин вышел комом , одкако исправили.
Кстати, goto ни в одном мне известном ассемблере нет - там все jp, rjmp, br и т.д. А из АЯ так без GOTO никуда - так это в раннем Фортране ( Фортран-4).
Всем - гран мерси .
|
|
Вадим К (статус: Академик), 17 марта 2011, 12:50 [#6]:
jmp - это тот же goto. Говоря о goto я имею ввиду не слово, а понятие.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Толяныч (статус: 4-ый класс), 17 марта 2011, 13:25 [#7]:
Я понял - просто захотелось блеснуть ерундицией )
|
|
bugmenot (статус: 3-ий класс), 17 марта 2011, 15:17 [#8]:
Tmp[j] := ^Pmas
синтах еггог же, Pmas^ же
надо поработать над стилем, тогда такие косяки будут видны сразу
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
DNK (статус: Студент), 17 марта 2011, 19:25 [#9]:
Цитата:
А вот после первого освоенного Алгол-60 на БЭСМ-6 паскалевские begin-end'ы и ':=' воспринимаются как родные, хотя сишные фигурные скобки для составных операторов меньше утомляют пальцы.
Толяныч: Пальцы утомлены только у тех, кто выполняет сам работу компьютера. Другие пользуют Code Templates.
"Digital Networked Knight"
|
|
Толяныч (статус: 4-ый класс), 18 марта 2011, 22:30 [#10]:
Code Templates -в Дельфи нашел что-то вроде , но как им пользоваться, пока не в курсе.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|