Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжение темы Вопросы по Delphi (до версии 2009) - часть 5

Познаем сами, помогаем другим...
Обсуждаем вопросы, не связанные с юникоидными версиями Delphi - для этого есть соответствующая тема (см. ссылки ниже).


 
Правила топика:
    Прежде чем спрашивать:
  1. Желательно изучить вопрос, попытаться найти ответ в прилагаемых мануалах, хелпах и анализируя исходники.
  2. Выполнить поиск по топику (открыть "Версия для печати" и поискать ответ там).
  3. Применить фильтр по разделу "Прикладное программирование". Ответы на многие старые вопросы могли быть даны в отдельных темах.
  4. Продумайте вопрос. На поверхностные вопросы вы получите поверхностные ответы, или вообще ответов не получите.
  5. Желательно указывать версии используемого компилятора и операционной системы.
    Прежде чем отвечать:
  1. Если не можете помочь, не мешайте.
  2. Если уж вы отвечаете на вопрос, давайте ответ по сути.
  3. Если вы не уверены, так и говорите! Ошибочный, но авторитетно звучащий ответ хуже, чем отсутствие ответа.
  4. Задавайте дополнительные вопросы, чтобы получить больше информации.
  • Отсутствие ответа не равносильно игнорированию - иногда участники форума просто не знают ответ. Повторная посылка вопроса не приветствуется. Посты типа "неужели никто не знает ответа..." или "может мне все-таки кто-нибудь ответит" недопустимы.  
  • Все большие куски кода (более 5 строк) оформляем в тег [morе] дабы уменьшить размер поста. FAQ по тегу [morе].


    Некоторые "родственные" топики:
     
  • Вопросы по Delphi (версии 2009-2010 Weaver)
  • Вопросы по компонентам для Delphi, C++ Builder
  • Использование DevExpress
  • Вопросы по Ehlib
  • Компоненты и утилиты для Delphi/BCB/FreePascal/Lazarus - только Open Source
  • Коммерческие компоненты и утилиты для Delphi/BCB
  • кабак программистов :)
     
    См. также: Некоторые полезные ресурсы о Delphi
     
    И старайтесь, чтобы ваш код не попал сюда :)

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 05:13 19-05-2010 | Исправлено: akaGM, 02:33 15-07-2020
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Код:
    gfx[i]:=nkeys;

    круто...
     
    a AddArray() принимает array of double по умолчанию...

    Всего записей: 24107 | Зарегистр. 06-12-2002 | Отправлено: 16:43 10-12-2012 | Исправлено: akaGM, 14:13 11-12-2012
    MagistrAnatol



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Гопода, пробовал и SDAC & ADOConnection в реал тайме все подключается, в десигн тайме  
    [DBNETLIB]ConnectionOpen(Connect()) SQL-сервер не существует или отсутствует доступ.  
    Сервак MS SQL 2005
    В чем прикол??
     
    Добавлено:
    если юзаю SQLConnection - получаю dbx error driver could not be properly initialized

    Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 16:55 11-12-2012
    GRom V

    Full Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Подскажите плиз как скопировать ип???
    Есть такая тема:
     http := Form1.IdHTTP1;
      strIP1 := http.Get('http://cmyip.com/');
      strIP1 := copy(strIP1, pos('My IP Address Is  ', strIP1) + 18, 15);
      strIP1 := Trim(strIP1);
     
    Но на сайте чет изменили и терь копируется фигня какая то!
    И если не трудно обьясните эту сторку (strIP1, pos('My IP Address Is  ', strIP1) + 18, 15);
    Я не бетман не ругайтесь сильно

    Всего записей: 466 | Зарегистр. 31-10-2006 | Отправлено: 06:54 15-12-2012
    Kmich



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    GRom V

    Цитата:
    И если не трудно обьясните эту сторку (strIP1, pos('My IP Address Is  ', strIP1) + 18, 15);

    это работа со строками, мы ищем позицию  подстроки 'My IP Address Is  ' в strIP1 и копируем 15 символов из strIP1 с этой позиции+длинна текста подстроки
     
    по идее можно использовать другой сайт если этот косячит (например http://checkip.dyndns.org/)
    проверил что возвращает сайт получилось  81.236.41.150  
    а http://checkip.dyndns.org/ все нормально </head><body>Current IP Address: 87.216.40.150</body></html>

    Всего записей: 192 | Зарегистр. 21-01-2005 | Отправлено: 08:36 15-12-2012 | Исправлено: Kmich, 08:44 15-12-2012
    R3Pa4eK



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Есть ли пример алгоритма BWT в Delphi?

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 22:29 16-12-2012
    Coltrain

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    R3Pa4eK

    Цитата:
    пример алгоритма BWT в Delphi?  

    Подойдет? http://coding.derkeiler.com/Archive/Delphi/borland.public.delphi.language.basm/2004-09/0030.html

    Всего записей: 160 | Зарегистр. 31-07-2002 | Отправлено: 12:19 17-12-2012
    AHTOLLlKA



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    всем привет!
    пытаюсь научиться адекватно парсить пакеты, нужно что-то на подобии этого чтобы получилось
       
     

    Код:
     
    MyType = packed record
    UID: Dword;
    NickLen: byte;
    Nick: String;
    Other: Byte;
    end;
    PMyType = ^MyType;
     
    .....................................
     
    var
    t : PMyType;
    buf : TByteArray;
    begin
    buf:=''; //тут данные
    t := PMyType(@buf[0]);
    len:=t^.NickLen;
    SetString ( nick ,pchar(@t.Nick),len);
     

     
    Nick - имеет разную длину, она в переменной LEN
    выше способ все парсит но когда я получаю "Other" то он выдает байт не после строки как мне нужно, а выдает 4-ый байт с начала строки =(
     
    подскажите как мне правильно парсить пакеты, в идеале надо как на скриншоте чтоб вышло
     
    Добавлено:
    данные хранятся в TByteArray
    нужно из src в которой - 01 02 03 04 05
    в dest положить 01 02 (первые например два байта)
    и из src удалить эти первые два байта чтобы он стал - 03 04 05
    вот
     
    делаю так

    Код:
    var
    src,dest: TByteArray;
    setlength(dest,6);
    MoveMemory( @dest[0], @src[0], 6);

    все отлично, но как удалить через INC не понимаю (

    Всего записей: 200 | Зарегистр. 29-09-2006 | Отправлено: 17:10 26-01-2013
    A_V

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AHTOLLlKA
     

    Цитата:
     но когда я получаю "Other" то он выдает байт не после строки как мне нужно, а выдает 4-ый байт с начала строки  

    строка - это указатель, простым доступом через поля структуры  
    (т.е обращаясь по жестко заданному смещению) ты не получишь данные после нее,
    т.к на этапе компиляции не известно, сколько в строке байт.
     
    т.е читать данные надо примерно так:

    Код:
     
    ptr: PByte
    ...
    ptr := @t.NickLen;
    inc(ptr, SizeOf(Byte));
    nick := ReadWidestring(ptr, t.NickLen);
    MessageLen := ReadByte(ptr);
    Message :=  ReadWidestring(ptr, MessageLen);
    Unk := ReadByte(Ptr);
     

    ---

    Код:
     
    procedure ReadData(var P: PByte; var Data; Len: Integer);
    begin
      Move(P^, Data, Len);
      Inc(P, Len);
    end;
     
    function ReadInt(var P: PByte): Integer;
    begin
      ReadData(P, Result, SizeOf(Result));
    end;
     
    function ReadByte(var P: PByte): Byte;
    begin
      ReadData(P, Result, SizeOf(Result));
    end;
     
    function ReadWidestring(var P: PByte; Count: Integer): WideString;
    begin
      ReadData(P, Result, Count * 2);
    end;
     

     

    Цитата:
    и из src удалить эти первые два байта

    MoveMemory(@src, PByte(@src) + 2, len)
    либо завести новую переменную
    shift_src := PByteArray(PByte(@src) + 2)^
    и работать с ней, если сдвигать надо часто

    Всего записей: 770 | Зарегистр. 07-04-2002 | Отправлено: 10:44 27-01-2013 | Исправлено: A_V, 10:47 27-01-2013
    AHTOLLlKA



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    A_V, спасибо за ответ!
     
    может кто подскажет как мне такое провернуть?
    есть array of byte с данными - 8195
    мне нужно достать 195 от туда, превратив в даже в DEC - 408
     
    почему то не могу реализовать без тупого превращения в строку и копирования (( а это ниразу не гуд

    Всего записей: 200 | Зарегистр. 29-09-2006 | Отправлено: 17:28 28-01-2013
    A_V

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AHTOLLlKA
    а в чем проблема?
    a[1]*$10*$10+a[2]*$10+a[3]
    ну или циклом пройтись, если нидексы не жестко заданы.
    правда как из 195 получается 408 я не уловил, 195h = 405d

    Всего записей: 770 | Зарегистр. 07-04-2002 | Отправлено: 11:10 29-01-2013
    AHTOLLlKA



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    вот мне подсказали как сделать

    Код:
    ((packet[0] and $0F) shl 8) + packet[1]

    Всего записей: 200 | Зарегистр. 29-09-2006 | Отправлено: 04:43 30-01-2013
    XPerformer



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В копилку методов сортировки (или индусские программисты курят в сторонке)
    Sleepsort
    Иногда нужно просто подождать...

    Всего записей: 2536 | Зарегистр. 20-06-2011 | Отправлено: 12:33 30-01-2013 | Исправлено: XPerformer, 12:38 30-01-2013
    Ognev

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Всем доброго времени суток!
     
    Подскажите, есть ли готовое решение по шифровке/расшифровке файлов любым асимметричным алгоритмом. Предполагается использовать под Delphi XE2. С ходу сам ничего работающего найти не смог.

    Всего записей: 397 | Зарегистр. 07-09-2004 | Отправлено: 18:27 01-02-2013
    ant0ni02004

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ognev
    не думаю что это будет достаточно быстро...  
    асимметричное шифрование в этом смысле обычно используется, чтобы передать ключ для быстрого симметричного алгоритма (как в PGP)

    Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 02:36 02-02-2013
    Linco

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Априори асимметричные алгоритмы медленней, чем симметричные. Выбор их может быть обусловлен необходимостью распространения ключей через незащищенные каналы связи.  
    Однако, имхо, для Ваших задач их скорость буде достаточной попробуйте RSA или ГОСТ

    Всего записей: 67 | Зарегистр. 11-07-2005 | Отправлено: 15:56 02-02-2013
    Ognev

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ant0ni02004, Linco,
    мне не для сети, файлы маленькие, так что скорость большой роли не играет. Но мечталось найти уже готовый алгоритм, чтобы не реализовывать самому велосипед. Либо исходники, либо dll - через компоненты не очень хочется. Я наткнулся на коллекцию готовых алгоритмов FGInt (Fast Gigantic Integers), попробовал оттуда RSA, но нормально не заработало - временами неправильно раскодирует. Может что еще присоветуете? Может кто PGP в Дельфи прикручивал, или еще что-то.

    Всего записей: 397 | Зарегистр. 07-09-2004 | Отправлено: 01:36 03-02-2013
    ant0ni02004

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ognev
    так смысл PGP, грубо говоря, в том, что при помощи RSA пересылается мааааленький (по размеру) ключик для быстрого симметричного алгоритма (напр. 3DES). И шифрование собственно файлов (или даже целых дисков) происходит именно симметриком (а Вам нужно именно ассиметриком, если я правильно понимаю)
     
    а что за ошибки в FGInt обнаружились?  
    P.S.
    по поводу pgp + delphi - поиск выдаёт много интересных ссылок как их подружить
    pgpsdk хотя бы

    Всего записей: 442 | Зарегистр. 26-10-2004 | Отправлено: 16:26 03-02-2013
    Ognev

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ant0ni02004

    Цитата:
    так смысл PGP, грубо говоря, в том, что при помощи RSA пересылается мааааленький (по размеру) ключик для быстрого симметричного алгоритма (напр. 3DES).

    Я в курсе, но у меня другая задача. Мне нужно маленький ключик (или пару десятков, не суть) зашифровать так, чтобы мой exe-шник его раскодировал, но в нем не содержалось ключа, которым можно было бы генерить другие такие файлы. Это для лицензирования.  
     

    Цитата:
    а что за ошибки в FGInt обнаружились?

    Я с кодом особо не разбирался, сделал пробный exe-шник с тремя Memo. Основной глюк в том, что некоторые тексты неверно раскодируются. Грубо говоря, вбил строчку в Memo - нормально раскодировалось, вбил еще - нормально, вбил третью - крокозябры. Возможно, у меня руки кривые, или может FGInt не рассчитан на юникодные строки - я пока не разбирался, но так как к нему нет документации, то вряд ли буду. Единственно, проверю не связан ли глюк по раскодированию с концевым переносом строкb в Memo.
     

    Цитата:
    по поводу pgp + delphi - поиск выдаёт много интересных ссылок

    Из того, что я бегло просмотрел про pgpsdk осталось ощущение, что использовать его для моей задачи можно, наверное, но это будет похоже на сбор грибов на танке - соберешь, но пешком и без пушки удобнее ))) Мне ж всего нужен в проге маленький кусочек кода по раскодированию открытым ключом готового файла, генерацию самого файла я готов делать и какими-нибудь утилитами, если это будет проще. И если не получится найти достаточно простой вариант того, что хочется, скорее всего буду думать в стандартную сторону - зашифровано симметричным алгоритмом, внутри электронная подпись.

    Всего записей: 397 | Зарегистр. 07-09-2004 | Отправлено: 00:22 04-02-2013 | Исправлено: Ognev, 00:26 04-02-2013
    XPerformer



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите функцию
    аналог PoxEx, но так чтобы можно было задать не только сколько символов пропустить от начала, но сколько символов просматривать при поиске - то есть чтобы можно было игнорировать начало и конец строки.
    Строка очень большая, операций поиска подстроки над ней производится тысячи, поэтому вариант вырезать подстроку с помощью Copy и потом в ней искать не подходит

    Всего записей: 2536 | Зарегистр. 20-06-2011 | Отправлено: 11:54 08-02-2013
    k94kwk1

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте!
     
    Вопрос:
    Использую Delphi: ADOConnection+ AdoQuerty + Datasource для доступа к БД Access. Данные отображаются в DBGRid. Есть три операции для работы с записями: правка, добавить, удалить.
    Реализуется многопользовательский режим. Т.е. несколько пользователей могут подключаться к БД и выполнять эти операции.
    При добавлении или правке – проблем нет я все решаю.
    Вопрос с удалением данных: что делать, если в момент, когда один из пользователей правит какую-либо запись другой ее удаляет???? У меня после завершения правки прога начинает орать, что запись была удалена и не выпускает с записи пока не нажму “OK”. Хотелось бы как то поцивилизованее эту ситуацию обрабатывать?  
     

    Например:

    а) закрывать запись от одновременного редактирования двумя пользователями (т.е. если один встал на эту запись, то другой не может)
    б) выводить сообщение о недоступности редактирования записи только один раз
    в) ваш вариант???
     

    Что порекомендуете?


    Всего записей: 28 | Зарегистр. 11-03-2012 | Отправлено: 14:33 10-02-2013
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru