| 
| 
 | Вопрос # 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 -в Дельфи нашел что-то вроде , но как им пользоваться, пока не в курсе. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |