Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 JwaWindows.RESTOREPOINTINFO как правильно получить текст и записать в Windows  [new]
yemets63
Member

Откуда: Самара
Сообщений: 1194
Delphi XE10
делаю точку восстановления Windows, пишу Discription
для этого беру тип JwaWindows.RESTOREPOINTINFO

typedef struct _RESTOREPTINFO {
  DWORD dwEventType;
  DWORD dwRestorePtType;
  INT64 llSequenceNumber;
  TCHAR szDescription[MAX_DESC];
} RESTOREPOINTINFO, *PRESTOREPOINTINFO;


у него два предложенных варианта кодовых страниц, которых я знаю
RESTOREPOINTINFOW (Unicode) and RESTOREPOINTINFOA (ANSI)

как правильно в Delphi записать Description , чтобы он правильно отображался в Windows

я делаю вот так

var
  restorePoint: JwaWindows.RESTOREPOINTINFO;
...
begin
...
   move(mDescr, restorePoint.szDescription, length(mDescr) * 2);
...


на вхоже mDescr как русские так и латиница, на выходе szDescription непонятно из какой кодовой стрницы

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

кто что скажет? в JwaWindows. UTF8 - не нашел_ да его в Windows и не запишешь.
7 авг 19, 18:52    [21944101]     Ответить | Цитировать Сообщить модератору
 Re: JwaWindows.RESTOREPOINTINFO как правильно получить текст и записать в Windows  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11263
var
  restorePoint: JwaWindows.RESTOREPOINTINFO;
  LDesc: string;
...
begin
...
   move(LDesc[1], restorePoint.szDescription, (length(mDescr) + 1) * SizeOf(LDesc[1]));
...

Или
StrPCopy(restorePoint.szDescription, LDesc)
7 авг 19, 19:12    [21944113]     Ответить | Цитировать Сообщить модератору
 Re: JwaWindows.RESTOREPOINTINFO как правильно получить текст и записать в Windows  [new]
alekcvp
Member

Откуда:
Сообщений: 1635
_Vasilisk_
   move(LDesc[1], restorePoint.szDescription, (length(mDescr) + 1) * SizeOf(LDesc[1]));

А если вдруг mDescr = '' ?..
7 авг 19, 19:23    [21944121]     Ответить | Цитировать Сообщить модератору
 Re: JwaWindows.RESTOREPOINTINFO как правильно получить текст и записать в Windows  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11263
alekcvp
А если вдруг mDescr = '' ?..
Да
7 авг 19, 19:27    [21944124]     Ответить | Цитировать Сообщить модератору
 Re: JwaWindows.RESTOREPOINTINFO как правильно получить текст и записать в Windows  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11263
alekcvp
А если вдруг mDescr = '' ?..
А еще оно может быть больше MAX_DESC
7 авг 19, 19:32    [21944130]     Ответить | Цитировать Сообщить модератору
 Re: JwaWindows.RESTOREPOINTINFO как правильно получить текст и записать в Windows  [new]
Zelius
Member

Откуда: Россия, Москва
Сообщений: 1375
yemets63,

  move(LDesc^, @restorePoint.szDescription[0], (length(mDescr) + 1) * SizeOf(LDesc[1]));

?
7 авг 19, 19:37    [21944131]     Ответить | Цитировать Сообщить модератору
 Re: JwaWindows.RESTOREPOINTINFO как правильно получить текст и записать в Windows  [new]
yemets63
Member

Откуда: Самара
Сообщений: 1194
спасибо, утром проверю, много часов работал, глаза не видят, голова не понимает. спать спать спать.
7 авг 19, 21:34    [21944170]     Ответить | Цитировать Сообщить модератору
 Re: JwaWindows.RESTOREPOINTINFO как правильно получить текст и записать в Windows  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1604
Если LDesc это string, то надо так
Move(PChar(LDesc)^,.....)


и не SizeOf(LDesc[1]) а лучше StringElementSize(LDesc)
7 авг 19, 21:38    [21944171]     Ответить | Цитировать Сообщить модератору
 Re: JwaWindows.RESTOREPOINTINFO как правильно получить текст и записать в Windows  [new]
yemets63
Member

Откуда: Самара
Сообщений: 1194
_Vasilisk_,

СПАСИБО.

для меня лучшее решение,

StrPCopy(restorePoint.szDescription, LDesc)


проверил много раз, работает, разные тексты, и даже русский
8 авг 19, 10:04    [21944378]     Ответить | Цитировать Сообщить модератору
 Re: JwaWindows.RESTOREPOINTINFO как правильно получить текст и записать в Windows  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11263
yemets63
для меня лучшее решение,
Только смотри, чтобы длина строки не вылезла за MAX_DESC
8 авг 19, 14:31    [21944770]     Ответить | Цитировать Сообщить модератору
 Re: JwaWindows.RESTOREPOINTINFO как правильно получить текст и записать в Windows  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11263
X-Cite
и не SizeOf(LDesc[1]) а лучше StringElementSize(LDesc)
Чем лучше?
8 авг 19, 14:31    [21944771]     Ответить | Цитировать Сообщить модератору
 Re: JwaWindows.RESTOREPOINTINFO как правильно получить текст и записать в Windows  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1604
_Vasilisk_
X-Cite
и не SizeOf(LDesc[1]) а лучше StringElementSize(LDesc)
Чем лучше?

кроссплатформенно
8 авг 19, 15:49    [21944914]     Ответить | Цитировать Сообщить модератору
 Re: JwaWindows.RESTOREPOINTINFO как правильно получить текст и записать в Windows  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11263
X-Cite
кроссплатформенно
А чем SizeOf() не кроссплатформенно?
8 авг 19, 16:04    [21944933]     Ответить | Цитировать Сообщить модератору
 Re: JwaWindows.RESTOREPOINTINFO как правильно получить текст и записать в Windows  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1604
LDesc[1] - нет)
8 авг 19, 16:08    [21944939]     Ответить | Цитировать Сообщить модератору
 Re: JwaWindows.RESTOREPOINTINFO как правильно получить текст и записать в Windows  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11263
X-Cite
LDesc[1] - нет)
Можно даже писать SizeOf(LDesc[999999])
8 авг 19, 17:49    [21945022]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить