![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Есть строка:
$7F $D9 $91 $AB $6E $CB ...... (размер 20мб) Ее нужно посчитать: 7FD9 + 91AB + 6ECB = 1804F ( т.е.) 32729 + 37291 + 28363 = 98383 (т.е.) (1804F) Из того что есть (очень медленно) это получаю в цикле и склеиваю в строку '$7FD9' после складываю... Пытался работать с массивом но из него не знаю как получить 2 значения только file[i] т.е. опять склеивать ![]() Просто складывать по одному байту file[i] получается раз в 20 быстрее... |
#2
|
|||
|
|||
![]() Переходите от array of Byte к array of Word
|
#3
|
|||
|
|||
![]() получается так:
1B 25 - 9499 2D 31 -12589 = 22088 HEX(5648) а если в калькуляторе(hex) сложить 1B25+2D31 =4856 не совсем понимаю магию чисел ![]() ![]() |
#4
|
|||
|
|||
![]() Вроде разобрался...
|
#5
|
|||
|
|||
![]() Код:
function CheckSum(blockStrpos,blockEndPos:Integer):string; VAR i: integer; sum: integer; Result2: string; begin sum := 0; i:=0; for i := 0 to 884734 do begin sum := sum +file[i]; // array of world end; Result2:=IntToHex(sum,8); Result:=Result2+'/'+inttostr(sum)+'/'+inttostr(Length(file)+' i '+inttostr(i); end; подскажите что не правильно делаю... не выдает нужного мне результата хотя считает(вначале) вроде все верно... ![]() Последний раз редактировалось Admin, 18.09.2011 в 18:14. |
#6
|
|||
|
|||
![]() Вот функция которая тормозит но выдает нужный результат...
Код:
function CheckSum2(file:string; blockStrpos,blockEndPos:Integer):string; VAR i,b,c:Integer; a:string; begin result:=''; for i:=1 to 1769472 do begin a:= a + IntToHex(ord(file[i]),2); if Length(a)=4 then begin c:= c + Strtoint('$'+a); a:=''; end ; end; Result:=IntToHex(c,2); Result:=Copy(Result,Length(Result)-3,4); if Length(a)>0 then Result:=''; end; Последний раз редактировалось Admin, 18.09.2011 в 18:15. |
#7
|
||||
|
||||
![]() Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; const l = 3; a: array[1..l*2] of Byte = ($7F, $D9, $91, $AB, $6E, $CB); var Form1: TForm1; implementation {$R *.dfm} function CheckSumm(x: array of Byte; lx: Integer): LongWord; var b: array of Word; i: Integer; begin Result := 0; if Odd(lx) then Exit; SetLength(b, lx div 2); Move(x[0], b[0], lx); for i := 1 to (lx div 2) do Result := Result + swap(b[i-1]); SetLength(b, 0); end; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(IntToHex(CheckSumm(a, l * 2), 8)); end; end. Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. |
#8
|
|||
|
|||
![]() dr. F.I.N.
Спасибо огромное!!!! ![]() ![]() ![]() |
#9
|
|||
|
|||
![]() Вот и еще вопрос появился...
как строку file записать в массив array of word написал так: Код:
var i: Integer; x: array of word; for i := 0 to Length(x) do Move(file[(i * sizeof(word)) + 1], x[i],sizeof(word)); но как вычитал позже MOVE перемещает из моей строки file в приемник. а вот как скопировать? что-бы file не изменился... ![]() |
#10
|
||||
|
||||
![]() Расскажи, откуда у тебя появляется строка FILE
Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. |
#11
|
|||
|
|||
![]() итак. есть программа которая обрабатывает указанный файл
1) считывает его в строку file (20мб) 2) находит в нем нужную информацию (POS-ом) 3) считает чексумму файла 4) сохраняет pos-ы и чексумму в config.ini я признаюсь впервые пытаюсь что-то написать на delphi. поэтому пишу так как нагуглил... ![]() |
#12
|
||||
|
||||
![]() Как получается, что набор данных текстовый?? вот я чего понять не могу. а вообще, напиши мне в аську - быстрее будет. раз99два88ноль00
Грамотно поставленный вопрос содержит не менее 50% ответа. Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть. |
#13
|
|||
|
|||
![]() Ася тутпит... постучите: 407686810
|