Size: a a a

2021 January 24

I

Igor in Delphi & Lazarus
while not Reader.Eof do begin
 прочитаноБайт := Reader.Read(Буфер, 65536);
 for i:=1 to прочитаноБайт do begin
   if Буфер[i] = #10 then begin
     Inc(НомерСтроки);
     if НомерСтроки = ИскомыйНомер then begin
       // нашли строку
     end;
   end;
 end;
end;
источник

b

bakalavrat in Delphi & Lazarus
Igor
while not Reader.Eof do begin
 прочитаноБайт := Reader.Read(Буфер, 65536);
 for i:=1 to прочитаноБайт do begin
   if Буфер[i] = #10 then begin
     Inc(НомерСтроки);
     if НомерСтроки = ИскомыйНомер then begin
       // нашли строку
     end;
   end;
 end;
end;
Что за буфер?
источник

I

Igor in Delphi & Lazarus
[1..65536] of AnsiChar
источник

b

bakalavrat in Delphi & Lazarus
Integer? := Reader.Read(Буфер, 65536);
источник

ea

eugene afx in Delphi & Lazarus
TTreeNode<T>

в квадратных скобках что указывается?
источник

ea

eugene afx in Delphi & Lazarus
че-то туплю с синтаксисом
источник

GB

George Bakhtadze in Delphi & Lazarus
eugene afx
TTreeNode<T>

в квадратных скобках что указывается?
индекс массива. а в угловых специализация типа
источник
2021 January 25

IP

Ivan Polyacov in Delphi & Lazarus
Вопрос спецам :) Вот представьте, что пишу я функцию, которая что-то делает с массивом байт - например считает хэш. Я могу передавать ей указатель на данные и кол-во байт, а могу передавать сам массив (получается изящнее). Но вот задача: что делать, если мне понадобится передать только часть уже существующего массива? С указателем это легко, а с массивом надо либо копировать (что затратно), либо вводить дополнительные параметры для указания subrange. А как бы вы сделали?
источник

DB

Dmitry Belkevich in Delphi & Lazarus
исходя из того, что чудес не бывает и информации о границах в самом массиве нет, ее нужно как-то дополнительно передавать
источник

VA

Viktor Akselrod in Delphi & Lazarus
Ivan Polyacov
Вопрос спецам :) Вот представьте, что пишу я функцию, которая что-то делает с массивом байт - например считает хэш. Я могу передавать ей указатель на данные и кол-во байт, а могу передавать сам массив (получается изящнее). Но вот задача: что делать, если мне понадобится передать только часть уже существующего массива? С указателем это легко, а с массивом надо либо копировать (что затратно), либо вводить дополнительные параметры для указания subrange. А как бы вы сделали?
дополнительный аргумент - индекс элемента массива, с которого надо считать
источник

IP

Ivan Polyacov in Delphi & Lazarus
Dmitry Belkevich
исходя из того, что чудес не бывает и информации о границах в самом массиве нет, ее нужно как-то дополнительно передавать
Ну когда параметром передаётся массив, его размер доступен. Тут было бы полезно что-то типа Slice() для создания нового массива, ссылающегося на часть данных исходного. Но, боюсь, так нельзя...
источник

SB

Sergey Bodrov in Delphi & Lazarus
Ivan Polyacov
Вопрос спецам :) Вот представьте, что пишу я функцию, которая что-то делает с массивом байт - например считает хэш. Я могу передавать ей указатель на данные и кол-во байт, а могу передавать сам массив (получается изящнее). Но вот задача: что делать, если мне понадобится передать только часть уже существующего массива? С указателем это легко, а с массивом надо либо копировать (что затратно), либо вводить дополнительные параметры для указания subrange. А как бы вы сделали?
В паскале для этой цели традиционно используется var параметр без типа. Для произвольных данных это нормально.
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Ivan Polyacov
Ну когда параметром передаётся массив, его размер доступен. Тут было бы полезно что-то типа Slice() для создания нового массива, ссылающегося на часть данных исходного. Но, боюсь, так нельзя...
так можно. но это не решает проблему
источник

IP

Ivan Polyacov in Delphi & Lazarus
Sergey Bodrov
В паскале для этой цели традиционно используется var параметр без типа. Для произвольных данных это нормально.
Так это фактически указатель и есть, только что синтаксис другой. И также требует передачи размера отдельным параметром.
источник

DB

Dmitry Belkevich in Delphi & Lazarus
повторю: как на той стороне узнают какой кусок нужно обрабатывать?
источник

VA

Viktor Akselrod in Delphi & Lazarus
массив какой?
источник

IP

Ivan Polyacov in Delphi & Lazarus
Dmitry Belkevich
повторю: как на той стороне узнают какой кусок нужно обрабатывать?
Например так: for i:=low(a) to high(a) do ...
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Ivan Polyacov
Например так: for i:=low(a) to high(a) do ...
ну так тебе ж не до high же нужно )))
источник

DB

Dmitry Belkevich in Delphi & Lazarus
high то вместе с массивом передается. а новый предел - нет
источник

SB

Sergey Bodrov in Delphi & Lazarus
Так можно додуматься до динамически создаваемых в рантайме типов с произвольным размером. Извращенцы. =)
источник