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

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

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

ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

ymg2000



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

Цитата:
Я сделал дата+время, получается ну практически неповторяемый ключ...

И дата, и время могут сбиться - поэтому ключ не самый надежный.  

Всего записей: 2391 | Зарегистр. 24-08-2007 | Отправлено: 19:59 11-04-2008
RomanTim

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

Цитата:
Использоваться будет как счетчик идентификационный клиента в базе

Наверное это все-таки не счетчик, а идентификатор, используй GUID и не парься со временем.
 

Цитата:
А как можно узнать в Time доли секунды?

MilliSecondOf, а вообще почитай в справке что из себя представляет формат TDateTime

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 19:10 12-04-2008
TohaDub



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

Цитата:
используй GUID

Но Гуид он на одной машине постоянно один и тот же или постоянно генерируется новый? Что т не пойму. В хелпе написано  "Создание глобального уникального идентификатора".  
Формат гуида {00000002-0000-0000-C000-000000000046}, да? В базе аксцеса тогда на полю этого счетчика-идентификатора ставить "Числовое-Код репликации", хотя тогда она округлит певые и последнии нули, что тоже не верно, тогда поставим String. Я прав?

Всего записей: 371 | Зарегистр. 26-06-2007 | Отправлено: 22:32 12-04-2008 | Исправлено: TohaDub, 22:47 12-04-2008
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
TohaDub
Гуид всегда новый и разный, и на одной машине, и на разных.
На счет "округления нулей" не понял - ты что имел в виду? Попробовал сделать аксесовую базу с полем типа код репликации - номально туда гуиды ложатся.

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 00:51 13-04-2008
TohaDub



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

Цитата:
На счет "округления нулей" не понял - ты что имел в виду? Попробовал сделать аксесовую базу с полем типа код репликации - номально туда гуиды ложатся.

Да, совершенно верно, аксес сам понимает что ему подсовывают гуид  и вставляет его (покрайней мере 2007), а вот Дельфя 7 ругается:
 
   
 
Где поле в базе имеет свойство "Числовое" - "Код репликации", а переменная CID: TGuid.
Или может сделать текстовое поле в базе и не парится, но мне по этому коду искать надо.

Всего записей: 371 | Зарегистр. 26-06-2007 | Отправлено: 07:59 13-04-2008
RomanTim

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
TohaDub
А ты не в AsInteger присваивай, а в Value и GUID в строку переведи.  
Вот так работет:
Код:
var
  guid: TGUID;
begin
  CoCreateGuid(guid);
 
  ADOQuery1.Append;
  ADOQuery1.Fields[0].Value := GUIDToString(guid);
  ADOQuery1.Fields[1].Value := 'zzz';
  ADOQuery1.Post;

Всего записей: 375 | Зарегистр. 11-09-2003 | Отправлено: 09:10 13-04-2008 | Исправлено: RomanTim, 09:12 13-04-2008
TohaDub



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

Всего записей: 371 | Зарегистр. 26-06-2007 | Отправлено: 11:28 13-04-2008
mazutka

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребята, такая проблема. У меня курсач по теме-локальная ася. Пишу на Delphi при помощи сокетов. Есть два приложения сервер и клиент. И возникли следующие вопросы:
1) Сервер может запускаться на любом компьютере, а потом всем подключаемым клиентам должен рассылать свой IP. После чего клиент его у себя прописывает и коннектится к серверу. Ну я так поняла, что это должен быть broadcast пакет. Если ошибаюсь, то исправьте меня. Искала я очень долго как это сделать...млин уже задолбалась...((( Ничего не понимаю..куда, что?
2) А также возникает вопрос как сделать, что бы при очередном запуске сервака он проверял есть ли в сети уже запущенный и если есть, говорил пользователю, что сервер запущен на другом компе???
3) Подключаемый клиент пишет свой ник и отправляет на сервер..там сервер проверяет на наличие подобных...если подобный есть, то подключение не осуществляется, если нет то подключение происходит...тоже не могу понять с помощью чего это сделать?
 
Помогите пожалуйста...если не сложно объясните подробно, что как....заранее благодарю_)

Всего записей: 4 | Зарегистр. 10-12-2006 | Отправлено: 03:56 14-04-2008
Bill_PHO

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не сталкивался ли кто с такой штукой в Delphi2007:
   1) время от времени компоненты ряда TADOQuery, TADOStoredProc ... прячутся за пвнелью или гридом, на котором они лежат. Чтобы до них добраться нужно сдвигать панель, грид и т.п.
   2) время от времени по компонентами исчезают Component Captions (в Options стоит галочка показывать их)  
 
Очень неудобно.
 
Если кто сталкивался - то как поборол?

Всего записей: 287 | Зарегистр. 15-08-2003 | Отправлено: 14:58 14-04-2008 | Исправлено: Bill_PHO, 14:59 14-04-2008
ALPeresvet

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, уважаемые. Выручите, пожалуйста советом. У меня такая проблемка:
 
Всё дело происходит в теле одной процедуры, с использованием GoTo. В случае нудовлетворительного результата выдаётся сообщение с предложением исправить ошибки автоматически:
 
if application.MessageBox('Попытаться исправить автоматически?',
      'Ваша конфигурация не прошла проверку!',MB_YESNO+
      MB_ICONQUESTION) = IDYES then
        repeat
          TFmu:= TFmu - 0.01;
          Em.Text:= FloatToStr(TFmu);
          goto LPodrez;
        until TFOPodrez = True;
 
Неувязочка в том, что после каждого возвращения на вышестоящую метку и неудовлетворении условия при очередном TFmu:= TFmu - 0.01 - опять выдаётся это сообщение. Посоветуйте, пожалуйста, как мне это обойти можно, чтобы цикл продолжался в "тихом" режиме до получения удовлетворительного ответа.
Заранее спасибо.

Всего записей: 13 | Зарегистр. 29-11-2007 | Отправлено: 20:48 14-04-2008
akaGM

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

Цитата:
Всё дело происходит в теле одной процедуры, с использованием GoTo...
что после каждого возвращения на вышестоящую метку

всё дело в том, что ты вышестоящую нижеследующую метку поставил в другой процедуре, совсем в другом файле и вообще на другом компе...
 
правда хороший ответ?
а ты как думал, что тут, телепаты что ли сидят?
давай код своей процедуры...

Всего записей: 24121 | Зарегистр. 06-12-2002 | Отправлено: 21:26 14-04-2008 | Исправлено: akaGM, 21:48 14-04-2008
ALPeresvet

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Дык, длинная она очень, но в общем вот обрезок...
 
procedure TForm1.SpeedButton1Click(Sender: TObject);
Var
.........................
  Label LPodrez;
 
begin
  LPodrez:
 
  TFMezhUgol:= StrToFloat(EMezhUgol.Text);
  TFbw1:= StrToFloat(Ebw1.Text);
  TFmu:= StrToFloat(Em.Text);
  TFz1:= StrToInt(EZ1.Text);
  TFz2:= StrToInt(EZ2.Text);
  TFU:= TFz2/TFz1;
  TFa:=20;
 
 
  Raschet_bi(TFmu,TFbw1, TFMezhUgol, TFb1, TFb2, TFbw2);
    GradMinSec(TFb1,Gb1,Mb1,Sb1);
    GradMinSec(TFb2,Gb2,Mb2,Sb2);
 
    GradMinSec(TFbw1,Gbw1,Mbw1,Sbw1);
    GradMinSec(TFbw2,Gbw2,Mbw2,Sbw2);
 
  ........
 
 
      if application.MessageBox('Попытаться исправить автоматически?',
      'Ваша конфигурация не прошла проверку!',MB_YESNO+
      MB_ICONQUESTION) = IDYES then
        repeat
          TFmu:= TFmu - 0.01;
          Em.Text:= FloatToStr(TFmu);
          goto LPodrez;
        until TFOPodrez = True;
    end;

Всего записей: 13 | Зарегистр. 29-11-2007 | Отправлено: 22:44 14-04-2008
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mazutka
А броадкасты разве пройдут за пределы данного сегмента сети? Обычно адрес сервера всегда в настройки выносят.
ALPeresvet
Ну введите еще одну переменную, что диалог уже выводился. А вообще с Label-ами надо осторожнее.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 22:54 14-04-2008
akaGM

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

Цитата:
длинная она очень

а для таких есть тег {more}
 

Цитата:
и неудовлетворении условия

ну и где это условие? где, вообще, эта TFmu вычисляется/задаётся, кроме как каждый раз из  ТEdit'a берётся?
чё-то у тебя, парень, с логикой исполнения не того...
загони проверку чего-то_там_своего _внутрь_ итерационной процедуры и уже там следи за каким-нибудь глобальным флагом типа tryAutomaticCorrection, а его повесь на чекбокс/радиобуттон...
без всякого зацикливания, да ещё и на основе goto не к ночи помянутого...
 
+
 
тем более, что в твоём исполении запрос в
if application.MessageBox()
при прохождении по циклу будет задаваться _всегда_
 

Всего записей: 24121 | Зарегистр. 06-12-2002 | Отправлено: 23:05 14-04-2008 | Исправлено: akaGM, 23:10 14-04-2008
ALPeresvet

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

Цитата:
ну и где это условие? где, вообще, эта TFmu вычисляется/задаётся, кроме как каждый раз из  ТEdit'a берётся?  

TFmu не вычисляется - это коэффициент, влияющий на последующие вычисления самым непосредственным образом, но это к делу не относится.Frodo_Torbins
Frodo_Torbins
А можно поподробнее на счёт того, что диалог уже выводился? Как называется событие?
 

Всего записей: 13 | Зарегистр. 29-11-2007 | Отправлено: 23:15 14-04-2008
akaGM

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

Цитата:
А можно поподробнее на счёт того, что диалог уже выводился? Как называется событие?  


Цитата:
Ну введите еще одну переменную, что диалог уже выводился.

 
не событие, а доп. флаг... булев...
читай внимательнее...

Всего записей: 24121 | Зарегистр. 06-12-2002 | Отправлено: 23:31 14-04-2008
ymg2000



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ALPeresvet
1. Забудь, что есть такой оператор Goto.
2. Оформи
Цитата:
 
  ....
  TFMezhUgol:= StrToFloat(EMezhUgol.Text);  
  TFbw1:= StrToFloat(Ebw1.Text);  
  TFmu:= StrToFloat(Em.Text);  
  ........
  GradMinSec(TFbw1,Gbw1,Mbw1,Sbw1);  
  GradMinSec(TFbw2,Gbw2,Mbw2,Sbw2);  
 
  ........
 

как внутреннюю процедуру, например Proc1.
3.
В теле обработчика что-то вроде этого:
....
Proc1(...);

Цитата:
 
if application.MessageBox('Попытаться исправить автоматически?',  
      'Ваша конфигурация не прошла проверку!',MB_YESNO+  
      MB_ICONQUESTION) = IDYES then  
         repeat  
          TFmu:= TFmu - 0.01;  
          Em.Text:= FloatToStr(TFmu);
 
          goto LPodrez;
          Proc1(...);  

Цитата:
    until TFOPodrez = True;

                                                             
 
 
 
Добавлено:
Не забудь в Proc1 анализировать TFOPodrez.

Всего записей: 2391 | Зарегистр. 24-08-2007 | Отправлено: 00:20 15-04-2008
Dimoniusis



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mazutka если локальный чат, то обычно используют Mail Слоты - оно в сегменте сети работает бродкастом без выделенных серверов. Если же полноценно делать - то настройка адреса сервера есть в клиенте. Как и порта и, по желанию, прокси. Ты себе представляешь регулярный спам ICQ.com например? На весь интернет чтоли он будет спамить?

Всего записей: 4134 | Зарегистр. 18-10-2005 | Отправлено: 08:58 15-04-2008
mazutka

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dimoniusis
А Mail Слоты работают в пределах одного сегмента сети?
Да я так и делаю...работаю с serversocket и clientsocket...настраиваю всех клиентов на определенный IP, порт...но а если сервак запустят на другой машине, что всех клиентов перенастраивать надо? Поэтому и задание такое, что на любом компе м.б. запущен сервак при условии, что он ещё не был где нить запущен...и всем клиентам, кот. хотят к нему присоединиться он отправляет свой IP. Пока делаю это через UPD...
 
Frodo_Torbins
Ну вот обычный пользователь откуда он знает где сейчас запущен сервер, а тем более какой у сервера IP. Мне надо что бы сервер сам автоматически всем присылал свои настройки.

Всего записей: 4 | Зарегистр. 10-12-2006 | Отправлено: 10:18 15-04-2008
Maks150988



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здраствуйте. Есть примерный массив:
  StrTxtBit : array [0..2] of PChar = ('128 kbps', '192 kbps', '320 kbps');
Но для полнейшей локализации приложения хотелось бы загружать строчки для этого массива из ресурсов. Искал реализацию в поисковых системах, но такого даже и нет... Сначала подсовывал просто константу resourcestring вместо 'блаблабла', но компилятор ругался про несовместимость типов, потом чего только не делал... Подскажите пожалуйста это вообще осуществимо?

Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 11:15 15-04-2008
   

Страницы: 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 (все версии) - часть 4
ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru