Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 06.12.2019
Сообщений: 5
RAD XE3+

Перенос int64 в другую форму (Или что-то типа того)

06.12.2019, 05:30. Показов 1803. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, нужна ваша помощь.

Проблема такая: Есть 2 формы, в 2 форме используется (ниже), нужно отвязать "-36000" от кода и привязать к SpinEdit в 1 форме, но чтобы я не делал нечего не выход.
Собственно для чего это делается. Хочется передать готовый ехе нескольким ребятам, но у них часовой пояс разные поэтому -36000 (-10 часов для gmt 0) у них не будет работать.

Delphi
1
2
3
4
5
var
  Res: Int64;
 
  Res := DateTimeToUnix(Now);
  Res := (Res - 36000);
Хелп плиз
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.12.2019, 05:30
Ответы с готовыми решениями:

Артефакты, или что-то типа того
Radeon 7870 Amd Phenom II x4 965 Системе 4 года, всегда все было стабильно, но на этой неделе в игре стали появляться артефакты, по...

Тени в CSS или что-то типа того
Всем привет :) Нужна помощь в CSS, вот собственно проблема. Заранее спасибо! :)

Реализовать прогресс бар или что-то типа того
Пробовал просто echo $i; flush(); Но почему-то выводится информация далеко не каждую итерацию, да и хотелось бы как-то выводить в...

13
 Аватар для GoodWeather
886 / 588 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
06.12.2019, 05:43
Какая цель преследуется-то? Время надо хранить в UTC.
0
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
06.12.2019, 10:25
Цитата Сообщение от madboy1 Посмотреть сообщение
Хочется передать готовый ехе нескольким ребятам, но у них часовой пояс разные
Ну и передавайте, при чем тут часовой пояс?
Когда Вы пишете такую вот инструкцию
Цитата Сообщение от madboy1 Посмотреть сообщение
Res := DateTimeToUnix(Now);
Вы этим получаете бортовое время компьютера. И если в Москве это будет 12:00, то где-нибудь в Магадане в этот же момент времени будет 20:00...
А Вы что хотите добиться?
0
0 / 0 / 0
Регистрация: 06.12.2019
Сообщений: 5
06.12.2019, 17:10  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
А Вы что хотите добиться?
Получается так, что у меня будет генерировать n/a строк нормально, ибо указывал -36000.
Но если я передам другому человеку и у него например время не gmt +10 а допустим +5, то у него будет генерировать под его текущее время-10 часов (То есть не так как нужно)

Суть софта такая, нужно сгенерировать кучу строк, каждая 10я строка имеет привязку по времени gmt 0.
Delphi
1
2
3
4
5
6
7
8
{
      "action": "xxx",
      "timestamp": Time,
      "isUploading": false,
      "increase": 200,
      "boost": 100,
      "reason": "xxx"
    }
0
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
06.12.2019, 17:17
Цитата Сообщение от madboy1 Посмотреть сообщение
Получается так, что у меня будет генерировать n/a строк нормально
Если честно, то мне это ни о чем не сказало...
0
0 / 0 / 0
Регистрация: 06.12.2019
Сообщений: 5
06.12.2019, 17:34  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
Если честно, то мне это ни о чем не сказало...
Сможешь подсказать как сделать? Чтобы я это Res := (Res - "Это вот") мог редактировать в другой форме?
0
Модератор
4138 / 2351 / 809
Регистрация: 15.11.2015
Сообщений: 9,396
06.12.2019, 18:09
Цитата Сообщение от madboy1 Посмотреть сообщение
"Это вот") мог редактировать в другой форме?
Так?
Delphi
1
2
3
4
5
6
7
8
procedure TForm1.Button2Click(Sender: TObject);
var
  TimeCorr: integer;
begin
  TimeCorr := -36000;
  TryStrToInt(InputBox('Разница во времени', 'Изменить разницу во времени', IntToStr(TimeCorr)), TimeCorr);
  Label1.Caption := 'Текущая разница во времени: ' + IntToStr(TimeCorr);
end;
Добавлено через 1 минуту
Это только пример. В твоём случае переменная должна быть не локальная процедуры, а переменная класса, и задавать эти -36000 если только не удалось прочитать значение из настроек программы.
0
0 / 0 / 0
Регистрация: 06.12.2019
Сообщений: 5
06.12.2019, 19:06  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
Так?
Не совсем. Получается оно делает тоже самое что и в моем случае Res.
И даже так он не хочет с другой формы с SpinEdit брать цифры

Delphi
1
2
3
Res := (Res - 36000);
-
"id": '+ IntToStr(Res - 60) +'_123_0"
0
Модератор
4138 / 2351 / 809
Регистрация: 15.11.2015
Сообщений: 9,396
06.12.2019, 19:27
Лучший ответ Сообщение было отмечено madboy1 как решение

Решение

Цитата Сообщение от madboy1 Посмотреть сообщение
И даже так он не хочет с другой формы с SpinEdit брать цифры
Да потому, что это не предусмотрено здесь!

Хочешь с другой формы? Бери, кто запрещает?
Delphi
1
Res := (Res - Form2.SpinEdit1.Value);
1
0 / 0 / 0
Регистрация: 06.12.2019
Сообщений: 5
06.12.2019, 19:32  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
Хочешь с другой формы? Бери, кто запрещает?
Ты Гений. Я видимо реально отсталый. Я писал Res := (Res - Form5.sSpinEdit1.Text) и у меня был еррор.
Это то что мне было нужно, спасибо!
0
Злостный нарушитель
 Аватар для Verevkin
10297 / 5720 / 1268
Регистрация: 12.03.2015
Сообщений: 26,494
06.12.2019, 20:00
Цитата Сообщение от AzAtom Посмотреть сообщение
Хочешь с другой формы? Бери, кто запрещает?
Это был классический случай оказания медвежьей услуги, описанный здесь.

Это ты зря. Пациенту требуется длительное лечение в стационаре, а ты ему ибупрофен прописал. И он побежал, довольный, заразу разносить.
0
Модератор
4138 / 2351 / 809
Регистрация: 15.11.2015
Сообщений: 9,396
06.12.2019, 21:12
Цитата Сообщение от madboy1 Посмотреть сообщение
Это то что мне было нужно
На самом деле это костыль, как верно заметили. Надо по другому реализовать эту настройку. В идеале я вижу некую запись (или класс) с настройками, она доступна в основной форме, из других форм она не доступна. Дальше, у формы с этим SpinEdit создаётся новое поле с настройкой и новое событие, например, OnChangeConfig, а в основной форме создаётся обработчик этого события. Код в этом обработчике заносит настройку из поля второй формы в нужные поля записи и вызывает другие обработчики для реакции на изменение параметра.

Ну здесь можно чуть проще. В основной форме есть обработчик события изменения настроек. Он читает поле формы настрое и применяет новые значения.
В форме настроек есть поля с нужными настройками, в обработчиках изменения значения вызываются события изменения конфигурации:

Основная форма:
Delphi
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
type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
    TimeCorr: integer;
    procedure ConfigChange(Sender: TObject);
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
uses ConfigForm2;
 
{$R *.dfm}
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  TimeCorr := 36000;
end;
 
procedure TForm1.FormShow(Sender: TObject);
begin
  Form2.OnConfigChange := ConfigChange;
end;
 
procedure TForm1.ConfigChange(Sender: TObject);
begin
  TimeCorr := Form2.TimeCorrection;
  Label1.Caption := IntToStr(TimeCorr);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.Visible := not Form2.Visible;
end;
 
end.
Форма конфигурации:
Delphi
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
type
  TForm2 = class(TForm)
    SpinEdit1: TSpinEdit;
    Label1: TLabel;
    procedure SpinEdit1Change(Sender: TObject);
  private
    { Private declarations }
    FOnConfigChange: TNotifyEvent;
    function  GetTimeCorrection: integer;
    procedure SetTimeCorrection(Value: integer);
  public
    { Public declarations }
    property TimeCorrection: integer read GetTimeCorrection write SetTimeCorrection;
    property OnConfigChange: TNotifyEvent read FOnConfigChange write FOnConfigChange;
  end;
 
var
  Form2: TForm2;
 
implementation
 
{$R *.dfm}
 
function  TForm2.GetTimeCorrection: integer;
begin
  Result := SpinEdit1.Value;
end;
 
procedure TForm2.SetTimeCorrection(Value: integer);
begin
  SpinEdit1.Value := Value;
end;
 
 
procedure TForm2.SpinEdit1Change(Sender: TObject);
begin
  if Assigned(FOnConfigChange) then
    FOnConfigChange(Self);
end;
 
end.
Добавлено через 32 минуты
Цитата Сообщение от Verevkin Посмотреть сообщение
оказания медвежьей услуги
Я понял, о чём ты. Но так и не понял, почему у автора возникает ошибка, если временная зона другая.

Добавлено через 6 минут
Цитата Сообщение от madboy1 Посмотреть сообщение
-10 часов для gmt 0
Время нужно в GMT? Тогда, почему сразу не получаешь в нужном виде?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Button2Click(Sender: TObject);
var
  t1: TSystemTime;
begin
  GetSystemTime(t1); // Получить системное время. Оно хранится в GMT.
  Label1.Caption := 'GMT: ' + IntToStr(t1.wDay) + '.' + IntToStr(t1.wMonth) + '.' + IntToStr(t1.wYear) + '  ' +
    IntToStr(t1.wHour) + ':' + IntToStr(t1.wMinute) + ':' + IntToStr(t1.wSecond);
 
  GetLocalTime(t1);
  Label2.Caption := 'Local: ' + IntToStr(t1.wDay) + '.' + IntToStr(t1.wMonth) + '.' + IntToStr(t1.wYear) + '  ' +
    IntToStr(t1.wHour) + ':' + IntToStr(t1.wMinute) + ':' + IntToStr(t1.wSecond);
end;
Добавлено через 53 секунды
А способ общения с формой настройки может пригодится в других проектах.
0
Злостный нарушитель
 Аватар для Verevkin
10297 / 5720 / 1268
Регистрация: 12.03.2015
Сообщений: 26,494
06.12.2019, 21:24
Цитата Сообщение от AzAtom Посмотреть сообщение
Но так и не понял, почему у автора возникает ошибка, если временная зона другая.
Из-за изначально неправильного проектирования программы.
Если на определённом этапе становится необходимым вставлять костыли, то умный опытный человек остановится, найдёт место, где сделал ошибку и переделает написанный код так, чтобы обойтись без костыля. Возможно, более целесообразным будет выкинуть весь говнокод ФТОПКУ и начать с нуля.
А дурак - продолжит затыкать дыры в логике, пока окончательно не превратит свою задумку в унылое говно.

Название: index.jpg
Просмотров: 19

Размер: 12.2 Кб

Теперь понял, не?
0
Модератор
4138 / 2351 / 809
Регистрация: 15.11.2015
Сообщений: 9,396
06.12.2019, 21:35
Verevkin, концепция понятна.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.12.2019, 21:35
Помогаю со студенческими работами здесь

Автоматическое создание таксономий или что то типа того
Подскажите как сделать так - У меня на сайте организована система вывода нужных записей на странице при помощи таксономии. Но в одном месте...

Метод объединения или что-то типа того. Как реализовать?
Здравствуйте! Пишу код к задаче. Условие: Используйте двумерный массив для решения следующей задачи. Компания имеет четырех...

Перенос в другую форму
Добрый вечер! есть 2 формы. в первой проверяется условие и выставляется значение true or false как эти результаты перенести в работу...

Перенос в другую форму
Имеется база с формой номер 1, для дальнейшей работы с базой необходимо всю ее перенести в другую базу с формой номер 2. Подскажите,...

Перенос переменной на другую форму
Работаем с 2 формой var s:string; begin s:=edit1.text; end; Как мне перенести переменную s на другую форму, на Form1?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru