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

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

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

ShIvADeSt (19-05-2010 05:14): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=11215  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

ShIvADeSt



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

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

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

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:09 28-06-2009 | Исправлено: psa1974, 12:00 02-02-2010
    dmmarch

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    сужена картинка - это просто проэкция, речь не про это.
    в массиве 3 значения
    х (широта), у(долгота) и например высота (топография)
    с цветами все ясно тут вопросов нет, как садить точку с этим цветом?
    географические координаты и координаты в битмапе?
    По поводу псевдо 3Д, Вы видите "тени" структур? Я имел ввиду их

    Всего записей: 7 | Зарегистр. 19-09-2009 | Отправлено: 13:50 20-09-2009
    Delta RuBoard



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    хы, кому интересно, вот нашел по шифрованиям не плохую страничку с кодами
    http://www.cyberforum.ru/pascal/thread33245.html#post156624
     
    все еще актуален вопрос с радиокнопками

    ----------
    мой маленький блог
    Создание on-line игр

    Всего записей: 382 | Зарегистр. 21-06-2005 | Отправлено: 13:55 20-09-2009
    Hiken



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

    Цитата:
    как садить точку с этим цветом?

    А в чем сложность? Обычная отрисовка: определяете зависимость координат изображения от координат на карте. Пробегаетесь по всем: рассчитываете цвет в засимости от значения высоты, ставите точку в памяти. По окончании пробега - отрисывываете всю карту в окне.
    Тени - это уже сами смотрите, от чего они зависят, и программируйте такую зависимость. У вас есть еще два параметра, влияющие на цвет: насыщенность и яркость.

    Всего записей: 1343 | Зарегистр. 14-01-2006 | Отправлено: 14:02 20-09-2009
    dmmarch

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

    Всего записей: 7 | Зарегистр. 19-09-2009 | Отправлено: 14:06 20-09-2009
    Delta RuBoard



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

    ----------
    мой маленький блог
    Создание on-line игр

    Всего записей: 382 | Зарегистр. 21-06-2005 | Отправлено: 14:20 20-09-2009
    Frodo_Torbins

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

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 14:26 20-09-2009 | Исправлено: Frodo_Torbins, 14:27 20-09-2009
    V1s1ter



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dmmarch
    Для правильного совета нужен весь перечень задач.
    Например, если отрисовать и не напрягаться GLScene.
    Сразу рисуем в 3D с источником света. Ставим точку обзора сверху и все.
    Дык, не забудьте правильно пересчитать координаты из элипсоидных в плоскостные - если требуется правильный масштаб, если нет то можно просто и не пересчитывать.
    И еще обратите внимание на развитие проекта - нескажут ли завтра - а теперь редактируем...
    Hiken
    По поводу теней - "что то придумать" легко если тени не реальные, а когда источник света это отрезок параллельный одной из сторон, а в остальных случаях возникают нюансы...
    В общем если объем карты позволяет лучше сразу в 3D и для простоты в GLScene.
    Можно перевести координаты а 3DS файл скелета и наложить на него текстуру подготовленную ранее предложенным методом и отобразить в любым  компонентом "View3DS".
    dmmarch
    Еще можно использовать ArcGIS SDK для формирования данных а смотреть в ArcGIS view.  
     
    Добавлено:
    Hiken
    Простите за оффтоп, поздравляю, у Вас 1000 сообщений!

    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 14:27 20-09-2009
    Delta RuBoard



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

    Код:
    function TForm1.Cesar_Crypt():string;  
    const  
      SizeA = 26;  
      RusA = 'abcdefghijklmnopqrstuvwxyz';  
    var i, P :integer;  
        temp,s:string;  
    begin  
      s:=AnsiLowerCase(Edit1.Text);  
      temp:='';  
      for i := 1 to length(s) do if pos(s[i],RusA)<>0 then temp:=temp+s[i];  
      s:=temp;  
      for i:=1 to length(s) do  
        begin  
        P:=pos(s[i],RusA)+1;  
        if P>SizeA then P:=P-SizeA;  
        Result:=Result+RusA[P];  
      end;  
      Edit2.Text := Result;  
    end;

    как здесь добавить замену пробела? ибо после крипта пробелы удаляются..

    ----------
    мой маленький блог
    Создание on-line игр

    Всего записей: 382 | Зарегистр. 21-06-2005 | Отправлено: 14:35 20-09-2009
    V1s1ter



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

    Код:
     
    const  
      SizeA = 27;  
      RusA = #32'abcdefghijklmnopqrstuvwxyz';  
     


    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 14:44 20-09-2009
    Delta RuBoard



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

    ----------
    мой маленький блог
    Создание on-line игр

    Всего записей: 382 | Зарегистр. 21-06-2005 | Отправлено: 14:50 20-09-2009
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Delta RuBoard
    В вашем варианте ведь формируется новая строка: "Result:=Result+RusA[P];". Вот сюда и надо добавить условие про пробелы. Или гляньте мой вариант. Там новая строка не создается, а изменяется существующая.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 14:54 20-09-2009
    Delta RuBoard



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

    Цитата:
    Delta RuBoard  
    В вашем варианте ведь формируется новая строка: "Result:=Result+RusA[P];". Вот сюда и надо добавить условие про пробелы. Или гляньте мой вариант. Там новая строка не создается, а изменяется существующая.

    вставил твой код, заменяет asd asd xyz на hzk hzk FGH при дельта =1.. что то не то(
     
     


    ----------
    мой маленький блог
    Создание on-line игр

    Всего записей: 382 | Зарегистр. 21-06-2005 | Отправлено: 14:59 20-09-2009
    dmmarch

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    V1s1ter
    Спасибо за совет, редактировать ничего не нужно делаю для себя.
    По поводу GLScene можно немного подробней, я вчера его скачал и почитал немного, но проблема в том что данные - хаотичный набор, тоесть не равно удалены. Кокой из компонент использовать в моем случае?

    Всего записей: 7 | Зарегистр. 19-09-2009 | Отправлено: 15:07 20-09-2009
    Delta RuBoard



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

    Цитата:
    Вот сюда и надо добавить условие про пробелы.

    а можно подробнее немного? просто я с делфи дружу только второй день

    ----------
    мой маленький блог
    Создание on-line игр

    Всего записей: 382 | Зарегистр. 21-06-2005 | Отправлено: 15:11 20-09-2009
    Frodo_Torbins

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

    Цитата:
    вставил твой код, заменяет asd asd xyz на hzk hzk FGH при дельта =1.. что то не то(  

    Нда, оказалось что в стандартной таблице кодов между "Z"и "a" еще есть несколько других символов. Придется применить подход как в вашей Cesar_Crypt, и создать свою таблицу. Будет нечто такое:

    Код:
    function TForm1.Code(Input: string): string;
    var
      tempS: string;
      i, newVal: integer;
     
    const
      delta = 7;       //будем сдвигать на delta символов
      WorkingArray = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
                                            //наша таблица символов
      WorkingLength = Length(WorkingArray); //длина таблицы
     
    begin
      tempS := Input;
     
      for i := 1 to Length(tempS) do   //пробегаемся по строке
      begin
        newVal := pos(tempS[i], WorkingArray); //находим номер символа в таблице
     
        if newVal <> 0 then //если символа в таблице нет, то ничего не делаем
        begin
          newVal := newVal + delta;           //номер нового символа
          if newVal > WorkingLength then      //если вышли за границы набора
            newVal := newVal - WorkingLength; //то возвращаемся в начало
          tempS[i] := WorkingArray[newVal];   //подставляем в строку нужный символ
                                                             //из таблицы
        end;
      end;
     
      Result := tempS;
    end;

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 17:06 20-09-2009
    V1s1ter



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

    Цитата:
    анные - хаотичный набор, тоесть не равно удалены. Кокой из компонент использовать в моем случае

    Это не имеет значение, в смысле условие равноудаленности не обязательное.
    Есть такое понятие "триангуляция" в нашем случае это группировка всех точек по 3 штуки для рисования одного треугольника. Есть несколько алгоритмом один из них назван по имени автора Делоне (Delone). Но эти алгоритмы нужны если все действительно хаотично.
    Если точки расположены хоть както закономерно все модно упростить. Начни с описания процедуры рисования серии треугольников в OpenGL - думаю немного станет яснее.
     
    Добавлено:
    Delta RuBoard

    Цитата:
    не, не канает=\
     

    Значит я неправильно понял что Вы хотите.

    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 18:43 20-09-2009
    Delta RuBoard



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    V1s1ter
    после прохода функции кодирования в тексте пропадают пробелы

    ----------
    мой маленький блог
    Создание on-line игр

    Всего записей: 382 | Зарегистр. 21-06-2005 | Отправлено: 18:55 20-09-2009
    V1s1ter



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Delta RuBoard
    Есть немного свободного времени - могу помочь, но сбрось все условие полностью.
     
    Добавлено:
    Delta RuBoard
    И если не трудно пример что на входе и что должно получится.
     
    Добавлено:
    Delta RuBoard
    код в сообщении выше Вас устраивает,и пробелы должны отставатся на месте то так:

    Код:
     
    вместо  
      for i := 1 to length(s) do if pos(s[i],RusA)<>0 then temp:=temp+s[i];  
    написать  
      for i := 1 to length(s) do if (pos(s[i],RusA)<>0) or (s[i] =#32) then temp:=temp+s[i];  
     


    Код:
     
    вместо  
      for i:=1 to length(s) do  
        begin  
        P:=pos(s[i],RusA)+1;  
        if P>SizeA then P:=P-SizeA;  
        Result:=Result+RusA[P];  
      end;  
    написать  
      for i:=1 to length(s) do  
        if s[i] =#32 then Result:=Result+#32    
        else begin  
        P:=pos(s[i],RusA)+1;  
        if P>SizeA then P:=P-SizeA;  
        Result:=Result+RusA[P];  
      end;  
     

    Но имейте  в виду, что пропадут все символы не из #32'abcdefghijklmnopqrstuvwxyz'

    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 19:08 20-09-2009
    Delta RuBoard



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

    Цитата:
    И если не трудно пример что на входе и что должно получится.

    in
    'abc xyz'
    out
    'bcd yza' (если просто оставляем пробелы)
    или же
    'bcdayz ' (если пробел тоже заменяется на след по счету символ)
     
    подставил твой код, получил результат
    'abc xyz' => 'bcd yz '
     
    Добавлено:
    p.s. если можно, то на ты =)
     
    Добавлено:
    то есть то что получилось не будет давать правильное решение, так как в out мы получаем выражение с двумя пробелами, а должен быть только один
     
    Добавлено:
    а, и еще, где можно почитать про символы вида "#32" ?

    ----------
    мой маленький блог
    Создание on-line игр

    Всего записей: 382 | Зарегистр. 21-06-2005 | Отправлено: 21:05 20-09-2009
    V1s1ter



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

    Цитата:
    а, и еще, где можно почитать про символы вида "#32" ?

    Запись "#число" означает, что это символ с кодом = число
    Запись "$число" означает что это число записано в шестнадцатиричном виде
    #32 = пробел
    #$41 = "A"
    Саму процедуру чуть позже...
     
    Добавлено:
    Delta RuBoard
    Src - строка для кодирования
    ABC - алфавит
    Delta - смещение "скрытого" алфавита
    Все символы, кроме пробела, в Src, которых нет в алфавите удаляются.
    Пробелы остаются на своем месте.
    Функция не оптимизирована, но работает.

    Код:
     
    function Cesar_Crypt(Src, ABC: String; Delta: Integer): String;
    var
      i, SizeA :integer;
      s: string;
    begin
      SizeA := Length(ABC);
      Result := '';
      s := '';
      for i := 1 to length(Src) do
        if (Pos(Src[i], ABC) > 0) or (Src[i] = ' ') then s := s+Src[i];
      for i := 1 to length(s) do
        if s[i] = ' ' then Result := Result+' '
        else begin
          Result := Result+ABC[((Pos(s[i], ABC)-1+Delta) mod SizeA)+1]
        end;
    end;
     

     
     
    Добавлено:
    Delta RuBoard
    Тоже самое, но символы которые отсутствуют в алфавите остаются на своих местах
    убрав строку  
    else Result := Result+Src[i];
    получем ..., а добавив в алфавит пробел - ...
    В общем тут, на мой взгляд все ясно, я пошел ...

    Код:
     
    function Cesar_Crypt(Src, ABC: String; Delta: Integer): String;
    var
      i, SizeA, P :integer;
      s: string;
    begin
      SizeA := Length(ABC);
      Result := '';
      for i := 1 to length(Src) do begin
        P := Pos(Src[i], ABC);
        if P > 0 then Result := Result+ABC[((P-1+Delta) mod SizeA)+1]
        else Result := Result+Src[i];
      end;
    end;
     

    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 22:13 20-09-2009 | Исправлено: V1s1ter, 23:22 20-09-2009
       

    Страницы: 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

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 5
    ShIvADeSt (19-05-2010 05:14): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=11215


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru