Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2016, 23:26   #11
nikitin.leha-201
Пользователь
 
Регистрация: 19.11.2016
Сообщений: 24
По умолчанию

[QUOTE=evg_m;1648752]если я правильно понял вашу проблему вы не можете понять а какую же часть буфера вам надо обработать (или константа или ... )
TStream.Read это функция и она возвращает какой-то результат. А значение оного описано в справочной литературе. (в т.ч. и в рекомендованной мною ранее).
Код:
fstream.Position:=0;
CRC:=0;
r:=Fstream.Read(A, length(A));
while r>0 do begin // у нас есть необработанные данные
  for j:=0 to r-1 do begin //именно столько нам "удалось" прочитать в последний раз
     CRC:=CRC + .... ; 
  end;
  r:=Fstream.Read(A, length(A); 
end;
и тоже самое но с одним единственным оператором Read
Код:
r:=-1;  r:=Fstream.Read(); 
CRC:=0;
while r<>0 do begin
  r:=Fstream.Read(A, length(A));
  for j:=0 to r-1 do begin
    CRC:=... ;
  end;
end;
P.S. а что вы будете теперь делать если CRC, как обычно и делается, записано в конце этого же файла и вам надо сравнить
1. рассчитанную вами (вы ведь учли(посчитали) и эти байты), это же "точно такие же" байты
2. записанную ранее (а они при расчетах их не учитывали), их ведь еще не было когда считали и потом записывали

Код:
Delta:=0; Fstream.Position:=0; r:=0;
CRC:=0;
for j:=0 to Fstream.Size -1 do begin
  if j-Delta >=r then begin
     Delta:=Fstream.Position; //Delta:=Delta +r;
     r:=Fstream.Read(A, length(A)); 
  end;
  CRC:=AddCRC(CRC, A[j-Delta] );
end;

function AddCRC(oldcrc: xxx; addval: zzz): xxx;
begin
  result:=oldcrc + ... ;
end;
P.P.S. при современных характеристиках железа, допустимые размеры буфера как правило превышают размеры редактируемых вручную файлов
и имеет смысл динамическая "подстройка" размера буфера под размер файла с целью снижения "сложности" программы путем избавления от "переключения буфера" на другой блок файла.
[CODE]var
A: array of byte; //динамический массив с неизвестным заранее числом элементов

SetLength(A, Fstream.Size); //задаем размер буфера(число элементов массива) по размеру файла
f:=Fstream(A, length(A)); //к сожалению теперь нельзя будет так просто прочитать данные из потока
r:=Fstream(@A[0], length(A)); // а надо будет сделать как-то вот так
if r<Fstream.Size then ; //черт знает что, я не сумел прочитать все

for j:=low(A) to high(A) do //обрабатываем буфер(массив) от корки(low -наименьший индекс) до корки(high -наибольший индекс)
....

Добрый вечер !
если я правильно понял вашу проблему вы не можете понять а какую же часть буфера вам надо обработать //

Не совсем так, с буфером всё понятно, как раз обрабатывается
в буфер (A,1023), при чём если увеличить размер буфера скажем (А, 2048), или (А,393216), то можно обрабатывать достаточно большие файлы, в специфики пик контроллеров и микроконтроллеров, где FlaSH редко превышает 65536 байт.

Но Вы, правы , P.P.S. при современных характеристиках железа, допустимые размеры буфера, как правило превышают размеры редактируемых вручную файлов.

А так как это вроде Hex редактор, то помимо файлов с фиксированным размером в байтах, возникает необходимость работать с файлами превышающими размеры буфера, а Дельфи ограничивает, как мы убедились размер буфера...

Поэтому задача простая стоит : как сделать так, чтоб можно было работать с файлами динамически, как Вы выразились (больших размеров).

TStream.Read это функция и она возвращает какой-то результат. А значение оного описано в справочной литературе. (в т.ч. и в рекомендованной мною ранее).

Да, материал скачали и я и сын читаем, спасибо, но к сожалению материала много и пока прочтёшь весь, то редактор, за года два писать придётся, уже неактуально будет. А про TStream.Read ,length(Функция Length возвращает или число символов в SourceString, или число элементов в SourceArray.) и @-скрепка указание буфера, это и раньше прочли (сын точней)я за эти дни тоже. Да и я, согласен, быстрей усваивается материал когда пишешь и анализируешь, чем когда читаешь, пока прочёл один том, забыл, что во втором и каша в голове... А во всех материалах, их тоже много накачали, к сожалению много вокруг и около, а по делу, то что нужно сейчас нет.... Простую задачу третий день решить не можем и материал здесь, к сожалению мало чем помогает.... Когда конкретный пример удаётся найти, отработать, тогда всё, понятно, а чтение, только путаница, пока прочёл, за был что хотел сделать. Еслиб на просторах инета был подробный материал по специфики, то конечно и на форумах, никто бы помощи не просил.

fstream.Position:=0;
CRC:=0;
r:=Fstream.Read(A, length(A));
while r>0 do begin // у нас есть необработанные данные
for j:=0 to r-1 do begin //именно столько нам "удалось" прочитать в последний раз
CRC:=CRC + .... ;
end;
r:=Fstream.Read(A, length(A);
end;
код не работает, много новых непонятных переменных: r? какая переменная, какого типа? CRC - какого типа и откуда?
r:=Fstream.Read(A, length(A)); компилятор не компилирует в ошибку....
length причина в этой функции думаю, её надо наверное предварительно объявить, где?

r:=-1; r:=Fstream.Read();
CRC:=0;
while r<>0 do begin
r:=Fstream.Read(A, length(A));
for j:=0 to r-1 do begin
CRC:=... ; // непонятно многоточие, присвоить что? как выводить в Label?
end;
end;

тоже не компилируется в ошибку....


Delta:=0; Fstream.Position:=0; r:=0;
CRC:=0;
for j:=0 to Fstream.Size -1 do begin
if j-Delta >=r then begin
Delta:=Fstream.Position; //Delta:=Delta +r;
r:=Fstream.Read(A, length(A));
end;
CRC:=AddCRC(CRC, A[j-Delta] );
end;

function AddCRC(oldcrc: xxx; addval: zzz): xxx;
begin
result:=oldcrc + ... ;
end;

тоже самое, ругается на ххх и не нравится функция

Delta какая переменная, какого типа?
как выводить в label?.

P.S. а что вы будете теперь делать если CRC, как обычно и делается, записано в конце этого же файла и вам надо сравнить
Это как раз непроблема, когда знаешь где эти контрольные байты, если в конце файла (устаревший метод) то считаешь до этих байт, остановился, далее с известного адреса считываешь контрольные байты и сверяешь, если сходятся, прошива хорошая, если нет, то битая.

Сейчас как правило не в конце прошивы, а ниже, в зоне переменных значений, но когда знаешь, то посчитал прошиву, считал известные и сверил.
Тут есть примеры и как это сделать нашли и отработали.
Хуже, когда эти байты неизвестны и разбросаны по разным адресам, один в начале, другой в середине....
Вот тогда имея образец проверяешь по обычной CRC, как в нашем случае.
Да и байты в пока они не проставляют, пока это любительское всё.

Так что пока актуально, как сделать динамически буфер, чтоб можно было работать с файлами больших размеров.

Код:
 var
FStream:TFileStream;
A: array [1..1023] of Byte;
D1,D2: Word;
U,size: integer;

begin

FStream .Position:=$0;
FStream.Read(A,1023);
D1:=$0;
for U:=1 to FStream.Size// либо значение константы подставляем с точными адресами do  D1:=D1+A[U];
Label1.Caption:=IntToHex(D1,A[U]);
end;
end;
FStream.Free;
end;
end.
Как по проще изменить строку и сделать вывод в Label
с - A: array of byte; //динамический массив с неизвестным заранее числом элементов. понятно, сделали динамический массив, а вот что дальше, изменить в коде?
nikitin.leha-201 вне форума Ответить с цитированием
Старый 02.12.2016, 09:01   #12
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
много новых непонятных переменных: r? какая переменная, какого типа?
1. берем справку (или книжку-справочник), а рекомендованная книжка и есть такой СПРАВОЧНИК.
2. находим используемую функцию. TStream.Read
3. узнаем тип параметров и тип результата.
4. определяем тип используемой переменной =типу результата функции.
r: integer;
Цитата:
CRC - какого типа и откуда?
просто как пример, что здесь вы будете как-то считать то что нужно вам, ту самую CRC.
причем я даже не знаю как именно вы ее посчитаете, именно поэтому там и ...
Цитата:
с - A: array of byte; //динамический массив с неизвестным заранее числом элементов. понятно, сделали динамический массив, а вот что дальше, изменить в коде?
читайте не только код, НО И КОММЕНТАРИЙ к данному коду. код написан только ради комментария.
Цитата:
Код:
var 
  A: array of byte; //динамический массив с неизвестным заранее числом элементов

SetLength(A, Fstream.Size); //задаем размер буфера(число элементов массива) по размеру файла
 f:=Fstream.Read(A, length(A));  //к сожалению теперь нельзя будет так просто прочитать данные из потока
r:=Fstream.Read(@A[0], length(A)); // а надо будет сделать как-то вот так
if r<Fstream.Size then ; //черт знает что, я не сумел прочитать все

for j:=low(A) to high(A) do  //обрабатываем буфер(массив) от корки(low(...) -наименьший индекс) до корки(high(...) -наибольший индекс)
....
какой тип переменных (см. выше).
чтобы выучить язык, надо на нем говорить.
чтобы запомнить функцию и ее параметры ее надо не учить, а применить самостоятельно (без Copy Paste) и c самостоятельным определением типов переменных.
конечно потом помогает структуризация данных (это есть и в справке SeeAlso и в том же справочнике)
и знание аналогичных
да и всплывающая подсказка с описанием параметров используемой функции никуда на делась из Dephi.
А может делась (я работал только с D7) ?
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 02.12.2016 в 09:20.
evg_m вне форума Ответить с цитированием
Старый 03.12.2016, 23:14   #13
nikitin.leha-201
Пользователь
 
Регистрация: 19.11.2016
Сообщений: 24
По умолчанию

Добрый вечер !

Попробовали работу с динамическим массивом, на основе данного примера Вами, и прочитанного материала....

Прога загружает файл, обрабатывает, выводит CRC, но при сравнении результата, с другим редактором есть различия, по файлам до 2048 байт в 41 , с файлом в 65536 байт в 12....
Но главное, попробывали загрузить файл в 5464311 байт, прога зависла, загружала минут 6 файл, загрузила, обработала разница в 68.
Явно гдето в цикле ошибка, но главное, загружать файл, с зависанием и за 6 минут, когда другой редактор загружает за секунду, это слишком....
Всё таки кажется что динамический массив, да и статический не подходят для работы с большими файлами.

Тут либо в потоке, либо ещё как то....

И очищает поле StingGrid, долго, секунд за 5-6.

Нужна помощь зала.

Код:
 var
A: array  of Byte; // создаётся динамический массив
buf: array[0..15] of Byte;
f: TFileStream;
i, j,count: Integer;
s:string;
D1: Word;

begin

SetLength(A, F.Size);
F .Position:=$0;
F.Read(A[0], length(A));
D1:=$0;
for i:=1 to F.size do  D1:=D1+A[i];
for j:=low(A) to high (A) do
begin
Edit3.Text:=' '+IntToHex(D1,A[j]);
end;
nikitin.leha-201 вне форума Ответить с цитированием
Старый 04.12.2016, 15:33   #14
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
r:=fstream.read(A[0], ... ); // A[0]  место откуда будет взят адрес для размешения данных
r:=fstream.Read(@A[0],...); // @A[0] (@) указатель на (A[0]) первый(нулевой[0]) элемент массива.
Цитата:
f:=Fstream(A, length(A)); //к сожалению теперь нельзя будет так просто прочитать данные из потока
r:=Fstream(@A[0], length(A)); // а надо будет сделать как-то вот так
Цитата:
Код:
for j:=low(A) to high (A) do
begin
Edit3.Text:=' '+IntToHex(D1,A[j]);
end;
ЗАЧЕМ вам выводит а одну маленькую строку (Edit1) выводить все 5464311 байт (length(A)=fstrem.Size = 5464311 байт )
да еще к тому же столько же раз выполнять модификацию строки вывода.
вот ваш тормоз.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 04.12.2016 в 15:49.
evg_m вне форума Ответить с цитированием
Старый 04.12.2016, 22:42   #15
nikitin.leha-201
Пользователь
 
Регистрация: 19.11.2016
Сообщений: 24
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Код:
r:=fstream.read(A[0], ... ); // A[0]  место откуда будет взят адрес для размешения данных
r:=fstream.Read(@A[0],...); // @A[0] (@) указатель на (A[0]) первый(нулевой[0]) элемент массива.

ЗАЧЕМ вам выводит а одну маленькую строку (Edit1) выводить все 5464311 байт (length(A)=fstrem.Size = 5464311 байт )
да еще к тому же столько же раз выполнять модификацию строки вывода.
вот ваш тормоз.
r:=fstream.read(A[0], ... ); // A[0] место откуда будет взят адрес для размешения данных
r:=fstream.Read(@A[0],...); // @A[0] (@) указатель на (A[0]) первый(нулевой[0]) элемент массива.

Не работает этот код, ни в какой интерпретации, ругается компилятор на @, хоть убей его....

Нет неправильно это наверное...

r:=Fstream(@A[0], length(A));

Edit3.Text:=' '+IntToHex(D1,A[j]);

А как по другому ещё выводить?
Выводится тогда вообще не понятные данные.....

Нет, здесь предположения не подойдут, тут точно надо знать, как , куда и что.
Вот Ваши справочники и библия флёнова и им подобные трактаты, лабуда одна, для запудривания мозгов.... Нет ни одного конкретного примера по теме, много вступления и много лишнего, всё можно описать в три строки , понятно и доступно, но видимо у автора писательский порыв и много свободного времени....Этот материал взрослому трудно читать, что говорить о детях....

Справка получается быстрей в поисковике ...
Есть, (правда мало) сайты, где действительно доходчиво, кратко и в примере объясняется....Тут талант нужен чтоб объяснить уметь.

Сын почитал и сказал : ещё два дня почитаю эту туфту, я интерес к программированию потеряю на проч. Будешь заставлять брошу....
Зато удалось сайт найти, там, столько материала и примеров, что 5 летнему понятно будет.... К сожалению все , по моему помешаны на TXT.FILE и почти нет примеров работы с типизированными (бинарными, Hex) файлами. За час чтения сайта, я узнал сегодня больше, чем прочитал (уже половину) библию Флёнова.... В голове каша, конкретики мало, пока прочёл вторую главу, на прочь за был, что читал в первой, каша и только.....

Нужны примеры и описание, почему, так, а не иначе....
Догадки всё же больше для профи... Рано гадать, когда опыт только начинается.

Последний раз редактировалось nikitin.leha-201; 04.12.2016 в 22:46.
nikitin.leha-201 вне форума Ответить с цитированием
Старый 05.12.2016, 09:19   #16
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

чтобы узнать базовые вещи (к примеру те же указатели) надо читать УЧЕБНИКИ.
Библия к таковым не относится.
Цитата:
но видимо у автора писательский порыв и много свободного времени....
я бы сказал наоборот, есть немного времени и большое желание ЧТО-НИБУДЬ написать. вот и пишется все что придет в голову без предварительного обдумывания и выстраивания. Как комментарий к УЖЕ написанному коду.
Есть Фаронов. (к сожалению он писал еще Turbo Pascal ). Но это именно учебник.
для паскаля и детей есть Песни о паскале(автор, если правильно помню, Окулов).

Цитата:
Не работает этот код, ни в какой интерпретации, ругается компилятор на @, хоть убей его....
привели бы ошибку, можно было бы понять(и подсказать) что не так.
к примеру вот так
Код:
var
   p: Pointer;
   a: array of byte;

p:=@A[0];
r:=Fstream.Read(p, length(A);
или так @ ( A[0] )

Цитата:
Нужны примеры и описание, почему, так, а не иначе....
Языки программирования тем и хороши, что одного результата можно достичь самыми разными путями.

Цитата:
А как по другому ещё выводить?
да выводить-то может и так.
НО зачем вам делать это в цикле (да еще таком длинном)
Код:
for j:=low(A) to high (A) do //for j:=0{low(A)} to 5464310{high(A)}
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 05.12.2016 в 09:31.
evg_m вне форума Ответить с цитированием
Старый 07.12.2016, 13:32   #17
nikitin.leha-201
Пользователь
 
Регистрация: 19.11.2016
Сообщений: 24
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
чтобы узнать базовые вещи (к примеру те же указатели) надо читать УЧЕБНИКИ.
Библия к таковым не относится.
я бы сказал наоборот, есть немного времени и большое желание ЧТО-НИБУДЬ написать. вот и пишется все что придет в голову без предварительного обдумывания и выстраивания. Как комментарий к УЖЕ написанному коду.
Есть Фаронов. (к сожалению он писал еще Turbo Pascal ). Но это именно учебник.
для паскаля и детей есть Песни о паскале(автор, если правильно помню, Окулов).


привели бы ошибку, можно было бы понять(и подсказать) что не так.
к примеру вот так
Код:
var
   p: Pointer;
   a: array of byte;

p:=@A[0];
r:=Fstream.Read(p, length(A);
или так @ ( A[0] )


Языки программирования тем и хороши, что одного результата можно достичь самыми разными путями.


да выводить-то может и так.
НО зачем вам делать это в цикле (да еще таком длинном)
Код:
for j:=low(A) to high (A) do //for j:=0{low(A)} to 5464310{high(A)}

С динамическим массивом пришлось отложить, не получается, оставили пока array.

Ещё раз прошу о помощи, нужен вывод данных в Stringgrid в столбцы , в старом коде вывод осуществляется в одну строку, а надо в 16 колонок.
С циклом For не получается.

Код:
var
buf: array[0..15] of Byte;
f: TFileStream;
b: array[0..15] of Byte;
i, j,count: Integer;
s:string;
begin

with OpenDialog1 do
if Execute then
begin
f:=tfilestream.Create(opendialog1.FileName,fmopenRead);
count:= 1 + (f.Size + 15) div 16;
f.Position := 0;
for i := 1 to f.Size div 16 do
begin
StringGrid1.Cells [0, i] := IntToHex(16 * (i - 1), 8);
//f.Position :=0;
count := f.Read(buf, 16);
s := '';
for j := 0 to count  -1 do
s := s + ' ' + IntToHex(buf[j], 2);
StringGrid1.Cells [1,i ] := s; // заполняет только первый столбец

s := '';
for j := 0 to count - 1 do
if buf[j] >= 32 then
s := s + chr(buf[j])
else
s := s + '.';
StringGrid1.Cells  [17, i] := s;  //символы ANSI заполняются отлично и в свою строку
end;
f.Free;
end;

end;
Пожалуйста , можно пример в коде, а не ссылки на библии и справки, нет данного примера, ни в описании Дельфи, ни в справках, пожалуйста можно пример в коде.
А как можно загрузить фото, а то отции нет для загрузки фото?

Последний раз редактировалось nikitin.leha-201; 07.12.2016 в 13:41.
nikitin.leha-201 вне форума Ответить с цитированием
Старый 07.12.2016, 13:40   #18
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Пожалуйста , можно пример в коде,
Код:
      StringGrid1.Cells[j,i]:=format('%.2x', buf[j]);
http://www.programmersforum.ru/showp...83&postcount=5

работающая программа с использованием TStringGrid

еще один справочник
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 07.12.2016 в 16:24.
evg_m вне форума Ответить с цитированием
Старый 09.12.2016, 17:00   #19
nikitin.leha-201
Пользователь
 
Регистрация: 19.11.2016
Сообщений: 24
По умолчанию письмо



Нет, этот код тоже не работает.
1) непонятно зачем константа создаётся, ведь в Form.Creat всё описано...
2) else if {j<count and} buf[j] in ASCII then begin компилятор ругается на этот код и не компилируется....
3)StringGrid1.Cells[j,i]:=format('%.2x', buf[j]); // непонятно что за формат должен вставляться в код?
4) на константу ASCII компилятор ругается ....

5) справочник уже скачен этот, но в нём, к сожалению нет к нашей теме, ничего конкретного, чем он может помочь?
6)Программа шахматы, интересна, но это совсем не то и этот пример не очень подходит, не понимает его сын, обо мне и говорить не стоит....

7) Нашёл материал на одном сайте, видео-уроки от Романа Кротова, он математик и отличный программист.
Каждый урок по 3-5 минут, так наглядно и доходчиво, что я уже понял про циклы, что такое динамический, и статический массив , константы, модули и функции, всё так подробно и доходчиво, что усваивается наверное пятилетнем ребёнком....
А главное, всё во время программирования, по ходу объясняется, показывается, почему так, а не иначе, что куда и как....
Я даже не думал, что так просто, доходчиво и главное так легко, усваивается урок о пройденном, я блин в институте таких лекций не слушал.....
Вот может всё же, человек объяснить, показать доходчиво, а главное интересно и усваивается с первого урока.

Всё же правильно говорят : что нет плохих учеников, есть плохие учителя, не умеющие правильно и доходчиво объяснить материал.....
Все эти Флёновы,Бескоровайные,Культин, Архангельский и другие объясняльщики, просто ни какие, нельзя им книги писать и пособия.....
Взрослому не понятно, о детях молчу....

Я их перечитал и кроме Helloo Word ничего и написать не смог толком....
За три урока Кротова, даже калькулятор сам написал, даже модернизировал, оказывается ни так трудно это, когда понимаешь что надо делать и как это делается....
Трудней уметь донести и правильно объяснить, чтоб интересно и понятно было. А все материалы в томах, только мозг захламляют и желание учится пропадает....

Все эти материалы для людей уже программирующих и знающих, для начинающего это вред !

А объяснить уметь и за интересовать, это талант и мастерство надо иметь всё же и не на словах, а на деле.
Гуру тоже одобрил уроки эти и подтвердил что Кротов, это настоящий профи...

Зарегистрировались на сайте Кротова, он помогает и объясняет, в чём ошибка и как это делается.
Я вчера всё таки с помощью динамического массива решил нашу проблему , ошибка была в одной строчке, в последовательности и ни каких лишних функций и описаний, написал Роману, он ответил, показал в чём была ошибка и почему не получалось.
С STRingGrid, с выводом данных и работой с этим компонентом сегодня объяснит в примере и покажет.

Тему закрываю, как нерешённую и бесперспективную....

Времени ушло вагон, сын потерял интерес к ней, тем более, что Гуру узнал что мы на форуме зарегились и спрашивали на форуме, а не у него... Мне выговор за это сделал...
Этот редактор должен был за 2 дня написан был бы, а мы неделю на месте, бесполезно протоптались....
Если у сына интерес вернётся к редактору, то будет с Гуру писать, а пока интерес полностью пропал и руки опустились....
Меня за это Гуру ругал сегодня.....
Простые вещи неделю решить не смогли....

Всем спасибо и особенно Евгению за помощь !.

Последний раз редактировалось nikitin.leha-201; 09.12.2016 в 17:16.
nikitin.leha-201 вне форума Ответить с цитированием
Старый 10.12.2016, 14:23   #20
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

это ВАШ код и ВАШ комментарий
Цитата:
Код:
StringGrid1.Cells [1,i ] := s; // заполняет только первый столбец
хотите заполнять другие столбцы КРОМЕ указанного в коде (первого), так УКАЗЫВАЙТЕ какие ЯЧЕЙКИ (в каком столбце и какой строке) и ЧЕМ хотите
Код:
StringGrid1.Cells [ <укажите НОМЕР столбца> ,<и номер строки> ] := <заполняйте чем хотите и как хотите >
Цитата:
3)StringGrid1.Cells[j,i]:=format('%.2x', buf[j]); // непонятно что за формат должен вставляться в код?
если ваш "гуру" до сих пор не познакомил c данной функцией (ее назначением (а не ВСЕМИ ее возможностями), а это не много не мало а ФОРМИРОВАНИЕ ВЫВОДА), то вряд ли стоило давать задание на написание редактора, где как раз и требуется такое форматирование.
я почти уверен(давно не заглядывал) описание есть в справочнике.

Цитата:
так наглядно и доходчиво, что я уже понял про циклы, что такое динамический, и статический массив , константы, модули и функции, всё так подробно и доходчиво
кто ж знал что это вам надо объяснить (дать УЧЕБНИК, а не справочник).
А задача написания редактора (да и еще за два дня) УЖЕ предполагает ЗНАНИЕ основ языка, что как раз и и составляет (циклы, массивы, условные выражения(ветвления).
И если дают такое задание, ЗАВЕДОМО зная уровень исполнителя, то ...
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi. создать проект, содержащий форму для ввода данных о поездке, вычисление стоимости, файл с записями, редактор egor55555 Фриланс 9 05.09.2016 17:28
Редактор XML файлов в Delphi MagGarbut Помощь студентам 1 15.03.2011 16:26
Программа для сравнения содержимого файлов Alter Свободное общение 7 25.11.2009 23:38