Имя: Пароль:
1C
1С v8
CRC
0 on2
 
05.03.13
14:51
Подскажите обработку какую нибудь или уже готовый алгоритм для подсчета обычной контрольной суммы вродя CRC32
В инете готовых решений не могу найти...
1 sapphire
 
05.03.13
14:52
(0) md5?
2 Wobland
 
05.03.13
14:52
а пожалуйста: wiki:CRC32#CRC-32
3 on2
 
05.03.13
14:54
Пожаааалуста :)
4 on2
 
05.03.13
14:54
нет не мд5 а простое crc32
5 skunk
 
05.03.13
14:55
6 skunk
 
05.03.13
14:55
там не крк ... но считается быстрее
7 on2
 
05.03.13
14:56
Мне бы уже готовую обработку или процедуру было бы неплохо найти :)
8 skunk
 
05.03.13
14:59
9 on2
 
05.03.13
15:04
тяяяяк се
10 on2
 
05.03.13
15:04
сейчас проверимс...
11 on2
 
05.03.13
15:17
Блин забыла сказать что мне надо CRC ФАЙЛОВ опеределять (((
12 on2
 
05.03.13
20:46
Пока не нашла алгоритм контрольной суммы CRC32 на файл... подскажите как быть))))
13 on2
 
05.03.13
20:47
в 1С:PDM от Апиуса почему то нифига не пашет расчет контрольной суммы хочу интегрировать свой! Пока не сильна в 1С 8.2 плохо знаю синтаксис но ищу готовое решение))
Кто мой герой? :)
14 rs_trade
 
05.03.13
21:18
для 8.3.2 есть встроенные.
15 rs_trade
 
05.03.13
21:27
16 on2
 
10.03.13
12:46
Балин вот подстава то...алгоритм нестандартный у меня((( нифига не срс32....
17 on2
 
10.03.13
12:46
rs_trade ты молодец конечно но у меня алгоритм не соотвествует ЦРЦ32... капец
18 Torquader
 
10.03.13
21:14
(17) А что у тебя за алгоритм ?
Не стоит забывать, что CRC-суммы строятся на основе полинома, поэтому, неплохо бы сообщить этот самый полином, чтобы поиски алгоритма были более направленными.
Хотя, для идентификации файлов явно md5 нужно.
19 on2
 
11.03.13
10:46
function GetKontrSum(FileName : string;var Bytes:Int64; var KontrSum : LongWord ) : boolean;
const BufSize = 2048;
var
  FHandle : integer;
  NumRead,i : integer;
  Buffer : array [1..BufSize] of byte;
begin
   Result:=True;
   FHandle := FileOpen(FileName,fmOpenRead or fmShareDenyNone);
   if FHandle = -1 then
      begin
           Result:=False;
           exit;
      end;
   Bytes:=0;
   KontrSum:=0;
   repeat
       NumRead := FileRead(FHandle, Buffer, BufSize);
       for i:=1 to NumRead do
         begin
           inc(Bytes);
             inc(KontrSum,Bytes*Buffer[i]);
         end;
   until NumRead < BufSize;
   FileClose(FHandle);
end;
20 on2
 
11.03.13
10:46
Вот алгоритм....как реализовать языком 1С непойму....
21 on2
 
11.03.13
10:47
как считать байт в файле ХЗ...
22 skunk
 
11.03.13
10:57
23 vde69
 
11.03.13
10:58
24 vde69
 
11.03.13
10:59
(23) код ВК открытый :)
25 on2
 
11.03.13
11:12
Что делать то с этим?
26 vde69
 
11.03.13
11:14
(25) ВК - это внешняя компонента для 1с, то есть это можно считать штатным расширением 1с. Как подключать - читай в желтых книжках :)
27 on2
 
11.03.13
11:15
аааа DLL цеплять надо.... сейчас буду пробовать
28 on2
 
11.03.13
12:33
блин.... не загружается библиотека(((
29 rs_trade
 
11.03.13
12:35
(28) Как загружаешь? Она наверное что то пишет, когда не загружается.
30 on2
 
11.03.13
12:42
я делаю ЗагрузитьВнешнююКомпоненту("VK.dll")
Ну dll конечно та что идет в комплекте в архиве
31 Alex375
 
11.03.13
12:50
А можно контест задачи узнать? Может быть предложат более простое решение
32 rs_trade
 
11.03.13
12:52
(30) В исключении ОписаниеОшибки что то пишет же
33 on2
 
11.03.13
12:52
в (23) есть вариант библиотека которую надо подключить...
А задача очевидна...как реализовать алгоритм в (19)
34 Alex375
 
11.03.13
12:54
(33) прости, Катя, но это решение задачи, а не сама задача.
35 on2
 
11.03.13
12:56
"Ошибка при вызове метода контекста" пишет(((
Ошибка при загрузке внешней компоненты
36 Alex375
 
11.03.13
12:59
По сути тебе надо получить первые 2048 байт файла и в цикле их перемножить с номером байта. Попробуй посмотреть "ДвоичныеДанные", созданный на основании файла. Может быть там удастся тебе получить то, что требуется.
37 on2
 
11.03.13
13:04
А то что я бибилотеку не могу подключить это норма?
38 ProxyInspector
 
11.03.13
13:14
У меня есть обработка для 1с77, которая должна работать и на 1с8. Надо только вызов и регистрацию переписать. Если есть опыт на 7-ке, тогда справитесь. Легко и очень быстро считает CRC32 и CRC16 для строк и файлов. Написана на Windows script. Результат совпадает со стандартными библиотеками.
39 vde69
 
11.03.13
14:12
(37) там должно еще описание быть...

рабочий пример для толстого и тонкого клиента тут http://code.google.com/p/restoration-base-1c8/downloads/detail?name=1Cv8_0.2.3.zip&can=2&q=
40 Torquader
 
12.03.13
00:19
Какое отношение алгоритм в (19) имеет к CRC, а просуммировать байты файла можно и на 1С, только нужно понять, какой размер регистра, так как inc работает с переполнением.

Файл=Новый ЧтениеФайла(ИмяФайла,КодировкаФайла.ANSI);
Сумма=0;
Счётчик=0;
Пока 1=1 Цикл
Символ=Файл.Прочитать(1);
Если Символ=НЕОПРЕДЕЛЕНО Тогда Прервать;КонецЕсли;
Счётчик=Счётчик+1;
Сумма=(Сумма+(КодСимвола(Символ,1)*Счётчик))%4294967296;
КонецЦикла;
Файл.Закрыть();
Сообщить("Получили:"+Строка(Сумма));
41 vde69
 
12.03.13
07:47
(40) вот "правильный"

// снимает crc32 с потока
function TBin1CD_VK.MemoryStream_CRC32(): Cardinal;
const BufLen = 4096;
const
 CRC32_Table: array[0..255] of LongWord =
   ($00000000,$77073096,$EE0E612C,$990951BA,$076DC419,$706AF48F,$E963A535,$9E6495A3 ,
    $0EDB8832,$79DCB8A4,$E0D5E91E,$97D2D988,$09B64C2B,$7EB17CBD,$E7B82D07,$90BF1D91,
    $1DB71064,$6AB020F2,$F3B97148,$84BE41DE,$1ADAD47D,$6DDDE4EB,$F4D4B551,$83D385C7,
    $136C9856,$646BA8C0,$FD62F97A,$8A65C9EC,$14015C4F,$63066CD9,$FA0F3D63,$8D080DF5,
    $3B6E20C8,$4C69105E,$D56041E4,$A2677172,$3C03E4D1,$4B04D447,$D20D85FD,$A50AB56B,
    $35B5A8FA,$42B2986C,$DBBBC9D6,$ACBCF940,$32D86CE3,$45DF5C75,$DCD60DCF,$ABD13D59,
    $26D930AC,$51DE003A,$C8D75180,$BFD06116,$21B4F4B5,$56B3C423,$CFBA9599,$B8BDA50F,
    $2802B89E,$5F058808,$C60CD9B2,$B10BE924,$2F6F7C87,$58684C11,$C1611DAB,$B6662D3D,
    $76DC4190,$01DB7106,$98D220BC,$EFD5102A,$71B18589,$06B6B51F,$9FBFE4A5,$E8B8D433,
    $7807C9A2,$0F00F934,$9609A88E,$E10E9818,$7F6A0DBB,$086D3D2D,$91646C97,$E6635C01,
    $6B6B51F4,$1C6C6162,$856530D8,$F262004E,$6C0695ED,$1B01A57B,$8208F4C1,$F50FC457,
    $65B0D9C6,$12B7E950,$8BBEB8EA,$FCB9887C,$62DD1DDF,$15DA2D49,$8CD37CF3,$FBD44C65,
    $4DB26158,$3AB551CE,$A3BC0074,$D4BB30E2,$4ADFA541,$3DD895D7,$A4D1C46D,$D3D6F4FB,
    $4369E96A,$346ED9FC,$AD678846,$DA60B8D0,$44042D73,$33031DE5,$AA0A4C5F,$DD0D7CC9,
    $5005713C,$270241AA,$BE0B1010,$C90C2086,$5768B525,$206F85B3,$B966D409,$CE61E49F,
    $5EDEF90E,$29D9C998,$B0D09822,$C7D7A8B4,$59B33D17,$2EB40D81,$B7BD5C3B,$C0BA6CAD,
    $EDB88320,$9ABFB3B6,$03B6E20C,$74B1D29A,$EAD54739,$9DD277AF,$04DB2615,$73DC1683,
    $E3630B12,$94643B84,$0D6D6A3E,$7A6A5AA8,$E40ECF0B,$9309FF9D,$0A00AE27,$7D079EB1,
    $F00F9344,$8708A3D2,$1E01F268,$6906C2FE,$F762575D,$806567CB,$196C3671,$6E6B06E7,
    $FED41B76,$89D32BE0,$10DA7A5A,$67DD4ACC,$F9B9DF6F,$8EBEEFF9,$17B7BE43,$60B08ED5,
    $D6D6A3E8,$A1D1937E,$38D8C2C4,$4FDFF252,$D1BB67F1,$A6BC5767,$3FB506DD,$48B2364B,
    $D80D2BDA,$AF0A1B4C,$36034AF6,$41047A60,$DF60EFC3,$A867DF55,$316E8EEF,$4669BE79,
    $CB61B38C,$BC66831A,$256FD2A0,$5268E236,$CC0C7795,$BB0B4703,$220216B9,$5505262F,
    $C5BA3BBE,$B2BD0B28,$2BB45A92,$5CB36A04,$C2D7FFA7,$B5D0CF31,$2CD99E8B,$5BDEAE1D,
    $9B64C2B0,$EC63F226,$756AA39C,$026D930A,$9C0906A9,$EB0E363F,$72076785,$05005713,
    $95BF4A82,$E2B87A14,$7BB12BAE,$0CB61B38,$92D28E9B,$E5D5BE0D,$7CDCEFB7,$0BDBDF21,
    $86D3D2D4,$F1D4E242,$68DDB3F8,$1FDA836E,$81BE16CD,$F6B9265B,$6FB077E1,$18B74777,
    $88085AE6,$FF0F6A70,$66063BCA,$11010B5C,$8F659EFF,$F862AE69,$616BFFD3,$166CCF45,
    $A00AE278,$D70DD2EE,$4E048354,$3903B3C2,$A7672661,$D06016F7,$4969474D,$3E6E77DB,
    $AED16A4A,$D9D65ADC,$40DF0B66,$37D83BF0,$A9BCAE53,$DEBB9EC5,$47B2CF7F,$30B5FFE9,
    $BDBDF21C,$CABAC28A,$53B39330,$24B4A3A6,$BAD03605,$CDD70693,$54DE5729,$23D967BF,
    $B3667A2E,$C4614AB8,$5D681B02,$2A6F2B94,$B40BBE37,$C30C8EA1,$5A05DF1B,$2D02EF8D) ;

var Res:Integer; BufPtr:Pointer; crcnew:longword; Buf: array[0..BufLen-1] of Byte;

   function G_NextCRC32(var CRC32: LongWord; P: Pointer; L: Cardinal): LongWord;
    asm
            TEST    ECX,ECX
            JE      @@qt
            PUSH    EBX
            PUSH    EAX
            MOV     EAX,[EAX]
            NOT     EAX
            PUSH    ESI
    @@lp:   MOVZX   ESI,BYTE PTR [EDX]
            MOVZX   EBX,AL
            SHR     EAX,8
            XOR     EBX,ESI
            XOR     EAX,DWORD PTR [EBX*4+CRC32_Table]
            INC     EDX
            DEC     ECX
            JNE     @@lp
            POP     ESI
            POP     EDX
            NOT     EAX
            MOV     [EDX],EAX
            POP     EBX
            RET
    @@qt:   MOV     EAX,[EAX]
    end;

begin
 BufPtr := @Buf;
 crcnew:=0;
 FFileStream.Seek(0, soFromBeginning);
 Res:=FFileStream.Read(Buf,sizeof(Buf));
 while (Res<>0) do begin
     G_NextCRC32(crcnew,BufPtr,res);
     Res:=FFileStream.Read(Buf,sizeof(Buf));
 end;
 Result:=crcnew;
end;
42 on2
 
12.03.13
12:04
(38)ProxyInspector будь добр поделись :)
(39) vde69 спасибо сейчас буду пробовать.
(40) не верится что запашет но сейчас тоже гляну))) спасибо заранее
43 on2
 
12.03.13
13:23
(40) Ваш алгоритм ругается на "ЧтениеФайла" и как может быть такое:"Пока 1=1 Цикл" один равно одному))))))
44 on2
 
12.03.13
13:25
(39) пример то рабочий но алгоритм подсчета не тот.... мне надо реализовать (40)
45 vde69
 
12.03.13
13:34
(44) в моем приведеном коде используется стандарт hfcxtnf CRC32 - RFC 1950


 8.2. The Adler-32 algorithm

     The Adler-32 algorithm is much faster than the CRC32 algorithm yet
     still provides an extremely low probability of undetected errors.

     The modulo on unsigned long accumulators can be delayed for 5552
     bytes, so the modulo operation time is negligible.  If the bytes
     are a, b, c, the second sum is 3a + 2b + c + 3, and so is position
     and order sensitive, unlike the first sum, which is just a
     checksum.  That 65521 is prime is important to avoid a possible
     large class of two-byte errors that leave the check unchanged.
     (The Fletcher checksum uses 255, which is not prime and which also
     makes the Fletcher check insensitive to single byte changes 0 <->
     255.)

     The sum s1 is initialized to 1 instead of zero to make the length
     of the sequence part of s2, so that the length does not have to be
     checked separately. (Any sequence of zeroes has a Fletcher
     checksum of zero.)



если тебе не все равно какой именно нужно использовать - наприши какой именно тебе нужен!
46 oleg_km
 
12.03.13
15:12
(43)
ИмяФайла вы присвоили ваш файл?

"Пока 1=1 Цикл" ну там же альше есть условие выхода. не всегда есть возможность условие цикла установить или в начале цикла или в конце.
47 Torquader
 
13.03.13
01:05
(46) Мужик силён - даже в СП заглянуть не может, но в код Delphi тычет пальчик - дескать - я-то - умный мальчик.
Хотя, ему в (41) код с ассемблерными вставками вывалили - он и не просёк.
48 vde69
 
13.03.13
08:34
(47) вообще то это дама :) и да-же с фоткой правильной :)))
и спрашивала она не про ассемблер а про то что предствавленое мною готовое решение ей не подходит по тому что алгоритмов расчета CRC32 есть несколько и ей не подходит.

У меня используется "Adler-32" а какой нужен ей я понятия не имею. Судя по всему она сначало в 1с хочет генерить CRC32 и отправлять в какую-то внешнюю системы (например сайт) и сторонний софт должен проверять пришедший файл, по этому алгоритм и важен...
49 skunk
 
13.03.13
08:45
нету фотки
50 on2
 
13.03.13
14:05
(46) мммм нет не присвоила)))
я сделала вот что:
ИмяФайла="D:\1.doc"

Как правильно?
51 Torquader
 
13.03.13
23:41
(50) Прошу прощения, мадам, писал по памяти, и думал, что вы заглянете в СП и поймёте, что всё не так.
Должно быть так:
   ИмяФайла="C:\Привет.bin";
   Файл=Новый ЧтениеТекста(ИмяФайла,КодировкаТекста.ANSI,Символы.ПС,Символы.ПС,Ложь);
   Сумма=0;
   Счётчик=0;
   Пока 1=1 Цикл
    Символ=Файл.Прочитать(1);
    Если Символ=НЕОПРЕДЕЛЕНО Тогда Прервать;КонецЕсли;
    Счётчик=Счётчик+1;
    Сумма=(Сумма+(КодСимвола(Символ,1)*Счётчик))%4294967296;
   КонецЦикла;
   Файл.Закрыть();
   Сообщить("Получили:"+Строка(Сумма))    

P.S. у меня работает, только, всё же, это не CRC, а что-то специфическое.
52 vde69
 
14.03.13
08:29
(51) нормальное CRC, произвольного файла, штатно в 1с сделать невозможно по тому что 1с не умеет читать бинарные файлы.

по этому сабж решить можно или через скрипты ОС или ВК :)
53 fmrlex
 
14.03.13
08:34
"Пока 1=1 Цикл"
Бьюсь головой об клаву...
54 2S
 
14.03.13
08:36
(53) ты не в теме
55 fmrlex
 
14.03.13
08:38
(54) Я не наркоман, да ))
56 Torquader
 
14.03.13
14:03
(55)
Разуй глаза:
Если Символ=НЕОПРЕДЕЛЕНО Тогда Прервать;КонецЕсли;
57 Torquader
 
14.03.13
14:19
(52) А что, чтение Текста не умеет читать двоичные - ну, может быть, придётся "бубнить" с символом перевода строки, но читает-то оно точно также, как Scripting.FileSystemObject:TextStream
и, в отличие, от семёрки на нулях не падает.
58 oleg_km
 
14.03.13
15:50
(57) Ну вобщето хотя и не документировано, но читает. И строки складывают бинарные данные
59 Torquader
 
14.03.13
19:50
(58) И почему же не документировано ?
В описании ЧтениеТекста и ЗаписьТекста написано - кодировка (то есть позволяет выставить однобайтовую), написан символ перевода строки и преобразуемый символ перевода строки, то есть проблема с CrLf -> Lf, как в DOS и Windows, сразу снимается.
И, насколько я помню, байт 26 не воспринимается, как конец файла.
Теперь вопрос - чем текстовые файлы отличаются от двоичных (если забыть про упомянутые выше ограничения).
60 oleg_km
 
14.03.13
21:31
(59) В документации не написано, что строки поддерживают двоичные данные. В том числе и содержащие двоичный ноль. Фича может исчезнуть в самый неподходящий момент. Хотя у меня используется где-то в банк-клиенте: нужно склеить бинарные файлы. Хотя я сейчас подумал: а вроде есть такая функция
61 fmrlex
 
15.03.13
08:31
(56) Дарю, епт.

   ИмяФайла="C:\Привет.bin";
   Файл=Новый ЧтениеТекста(ИмяФайла);
   Сумма=0;
   ЧтФайл=Файл.Прочитать();
   Для Индекс = 1 По СтрДлина(ЧтФайл) Цикл
       Сумма=(Сумма+(КодСимвола(Сред(ЧтФайл,Индекс,1),1)*Индекс))%4294967296;
   КонецЦикла;    
   Файл.Закрыть();
   Сообщить("Получили:"+Строка(Сумма))
62 vde69
 
15.03.13
09:23
(59) тем что строки pchar не могут в себе содержать #0 по тому как по этому символу определяется длинна данных в строке.

даже если данные лежат в потоке в 1с ты с ними ничего не сделаешь если в них содержится нули
63 oleg_km
 
15.03.13
09:52
(62) А ты пробовал? Что общего имеют строки pchar и строки 1С? Ты знаешь, как реализованы строки 1С? Ну попробуй ЧтениемТекста прочитай два файла и запиши полученные строки в ЗаписьТекста. Очень удивишься результату. Даже если в исходных файлах будут двоичные нули
64 Torquader
 
15.03.13
19:15
(62) Если читать посимвольно, то получаем, что когда читается символ 0, то или он читается как строка с символом ноль (VbScript) или он читается как пустая строка (Си), но в любом случае код символа будет равен нолю.
А вот если символов больше одного - то тут могут быть вопросы.
(61) Очень хороший способ, только если файл несколько гигов, то вряд ли он влезет в память целиком, тогда как по символам хоть и медленно, но будет читаться.
65 fmrlex
 
18.03.13
11:53
(64) Для больших файлов рекомендую писать dll на другом языке и подключать к 1С. Ну или взять готовые.
66 Torquader
 
19.03.13
01:05
(65) Для очень больших файлов даже на АСМ-е программа будет считать какое-то время (особенно, если контрольную сумму Md5 рассматривать).
67 on2
 
19.03.13
08:19
Проблема в том что это чтение файла текстового! А мне надо чтоб читались все файлы и распознавались правильно коды символов! При использовании: ЧтениеТекста(ИмяФайла) - Коды символов распознаются неправильно....
68 on2
 
19.03.13
09:09
(61) актуально только для текстовых файлов
69 fmrlex
 
19.03.13
09:20
(68) Пиши native api  компоненту.
70 vde69
 
19.03.13
09:22
(69) я ему ее уже дал :) при чем с исходниками, если его не устраивает алгоритм Адлер-32 пускай в процедуру вставит другой код и перекомпелит, ну и заодно там можно закоментить поиск блоков при открытии файла.
71 Torquader
 
20.03.13
01:15
(67) Не знаю, как у вас, у меня чтение текстового файла (правда через объект Scripting.FileSystemObject) использовалось для анализа образа дисков, и, не считая скорости работы, всё работало на ура.
72 on2
 
05.04.13
12:15
(67) В общем у тебя коды символов другие присваиваются :)
73 on2
 
05.04.13
12:16
Работать то будет но коды символов присваиваются совершенно другие...
74 Torquader
 
05.04.13
23:57
Не забываем про то, что однобайтовая кодировка переводится в Unicode, так как в 1С у нас Unicode-строки.
Если использовать вставку VbScript, то можно использовать функцию Asc, которая даёт однобайтовый код символа - тогда получается всё, как надо.
75 on2
 
30.04.13
13:27
блин вот так проблемы
76 on2
 
30.04.13
13:29
народ (19) кто может пояснить каждую строку что делается?
может я схожу с ума у меня значение контрольной суммы получаются 15 значные а должны 10 знаков всего...
77 on2
 
30.04.13
22:18
вот нашла причину.

ВОПРОС ВСЕМ!!!
как в 1С 8.2 определить переменной тип значения аналог integer причем чтоб при сложении в случае переполнения знака автоматически производился последующий расчет как производится в delphy.
я так полагаю у меня за пределы знака уходит значение и за место 10 значной суммы получается 15-значная!
ПОМОГИТЕ!!
Как фиксирванно указать числовому значению 10 знаков??? чтоб при переполнении он делал такие же действия аналогичные при выполнении такой операции в delphy.
78 Мимохожий Однако
 
30.04.13
22:44
Приведи контрольный пример чего хочешь. За эмоциями не видно.
79 oleg_km
 
30.04.13
23:50
(77) Как только число превысит 4000000000 (2^32) нужно эти 2^32 от него и отнять.
80 on2
 
01.05.13
09:06
(77) т.е. как только у меня получается такое:
                 
КОНТРОЛЬНАЯСУММА=КОНТРОЛЬНАЯСУММА+КС; \\суммирование байтов кс последнего подсчитанного байта (КС) со всеми предыдущими.

Если КОНТРОЛЬНАЯСУММА>4000000000 тогда
КОНТРОЛЬНАЯСУММА=4000000000-КОНТРОЛЬНАЯСУММА;
КонецЕсли;

т.е. мне уже после операции сложения нужно проверку производить? или как то до этого момента?
81 oleg_km
 
01.05.13
09:13
(80) Ну не 4000000000, а 2^32. У тебя же CRC32? Значит результат целое 32-х битное. Значит при переполнении результата нужно отбрасывать 2^32 и складывать дальше.
82 on2
 
01.05.13
09:24
(81)у меня  не CRC32
Это алгоритм аналог контрольной суммы сам алгоритм на языке делфи написан в (19)
я его переделала на 1С.
Числа складываются десятичные обычные.
83 on2
 
01.05.13
09:25
число должно быть integer!
84 on2
 
01.05.13
09:25
не превышающее Integer!
85 oleg_km
 
01.05.13
13:22
(82) на Дельфях это само собой происходит. На Дельфях Integer - это 32-битное целое. Когда к нему прибавляешь больше чем 2в32 оно само сбрасывается на начало. В 1С число гораздо больше 2в32, пожтому его нужно принудительно сбрасывать
86 on2
 
01.05.13
13:48
вот как это сделать? На дельфях интеджер чему равен? в десятичной системе...чтоб я могу как то искуственно эмулировать тип интеджер в 1С.
87 on2
 
01.05.13
13:49
10 значное число? т.е. 9 999 999 999 ??????
88 on2
 
01.05.13
13:50
Вот что будет при прибавлении 1 и 2 к этому числу?
т.е. 9 999 999 999 +1=?
    9 999 999 999 +2=?
89 oleg_km
 
01.05.13
15:41
(86) Я же говорю: в Дельфях Integer равен 2 в степени 32

(88) Правильно, будет 0 и 1, только не 9 999 999 999, 2 в степени 32.

т.е. примерно так:

Цикл
...
   КС = КС + СледующийБайт;
   Если КС >= Pow(2, 32) Тогда
       КС = КС - Pow(2, 32);
   КонецЕсли;
...
КонецЦикла;
90 on2
 
01.05.13
15:45
(89) я оперирую десятичными числами....
Может я что то непонимаю...
91 on2
 
01.05.13
15:47
(89) выходит если прибавить к
9 999 999 999 +5 получим=0 000 000 004
92 Ковычки
 
01.05.13
16:06

Методы = Новый СписокЗначений;
Методы.Добавить("MD5");
Методы.Добавить("SHA1");
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.Фильтр="";
Для Каждого Метод Из Методы Цикл
   ДиалогОткрытияФайла.Фильтр=ДиалогОткрытияФайла.Фильтр+"Файлы ("+Метод+")|*|";
КонецЦикла;
ДиалогОткрытияФайла.МножественныйВыбор=Ложь;
Если Не ДиалогОткрытияФайла.Выбрать() Тогда
   Возврат;
КонецЕсли;
Файл=ДиалогОткрытияФайла.ВыбранныеФайлы.Получить(0);
УТФ8 = Новый COMОбъект("System.Text.UTF8Encoding");
Метод=Методы.Получить(ДиалогОткрытияФайла.ИндексФильтра);
Енкрипт = Новый COMОбъект("System.Security.Cryptography."+Метод+"CryptoServiceProvider");
ХешБайт=Енкрипт.ComputeHash_2(УТФ8.GetBytes_4(Файл));
Хеш="";
Для Каждого Байт Из ХешБайт Цикл
      Хеш = Хеш + КодСимвола(Байт) + " ";
КонецЦикла;
Сообщить("Файл = " + Файл + "; Метод = " + Метод + "; Хеш = " + Хеш);
93 Ковычки
 
01.05.13
16:08
(91) бывает и так
94 oleg_km
 
01.05.13
20:23
(91) Не понимаешь. Компьютер оперирует битами и байтами. Integer - это число, которое содержит 32 бита. Т.к. бит это 0 и 1, то максимальное число, которое может содержать переменная типа Integer - это 2 в стемени 32, что-то около 4 млрд. Вообще-то это изучают еще в школе (старшая дочь как раз летом ЕГЭ сдавать будет).
95 vde69
 
02.05.13
14:00
(94) ты не прав, компьютер на физическом уровне оперирует  сущностями (на уровне регистров ЦП)- байт, слово
на уровне целочисленных команд - бит, байт, слово
и дополнительно на уровне сопроцессора - "число с плавающей точкой"


число Integer не 4 байта, а 2 слова, сейчас реально есть Integer - 8байт, и к слову в любом внятном описании про это написано :), именно по этому не рекомендуется использовать тип Integer во всяхих хитрых трюках с указателями и длинной
96 oleg_km
 
02.05.13
15:13
(95) В контексте данного топика наиболее вероятен 32-х битный Integer (CRC, десятизначные значения). А про биты я написал, чтобы объяснить почему получаются некруглые числа.
97 Torquader
 
02.05.13
22:03
А что Value%MaxInt не работает ?
98 on2
 
06.05.13
08:39
Так что же делать мне???? ((((
99 on2
 
06.05.13
08:39
(92) это не то меня интересует (19)
100 Ковычки
 
06.05.13
08:54
это ничем не отличается от (19)
101 Алистар
 
06.05.13
08:58
А что хорошая была игра C&C, особенно после варкрафт-1 и дюна-2.
102 on2
 
06.05.13
13:44
(100) отличается
я непоняла
103 Jaffar
 
07.05.13
13:28
(77) см. (61) - %4294967296
104 Jaffar
 
07.05.13
13:29
(90) "я оперирую десятичными числами.... "
поздравляю.
а компьютер (в том числе и 1С) - двоичными :-)
105 Jaffar
 
07.05.13
13:30
(98) см. (61) - тебе нужно сделать %4294967296
106 Jaffar
 
07.05.13
13:30
(101) сначала - дюна-2, а потом уже все остальное :-)
107 Jaffar
 
07.05.13
13:31
(101) сначала БЫЛА дюна-2, а потом уже все остальное :-)
108 Torquader
 
09.05.13
00:29
А что, "чудик" из (0) так CRC и не написал ?