Вопросы с тегами [delphi]

1

голосов
1

ответ
388

Просмотры

Удалить Мета тег

Мне нужно удалить или отключить мета тег «ГЕНЕРАТОР» из заголовка проекта IntraWeb. Нужна помощь по этому вопросу. Я использую RAD Studio xe7.
Fatersoft Co
1

голосов
2

ответ
86

Просмотры

Как добавить элементы из запроса SQL в TListView

Я хочу, чтобы добавить элементы из запроса в TListView, используя для цикла. Но я получаю сообщение об ошибке сказав «Слишком много фактических параметров» от линии ListViewShifts.Items.Add (). Что такое правильный способ добавления в список из запроса? QRY: = TFDQuery.Create (DbConnection); Qry.Connection: = DbConnection; Qry.SQL.Text: 'SELECT Count (10) ОТ Bookings ГДЕ NurseNo =: nurseID;'; . Qry.Params.ParamByName ( 'nurseID') AsInteger: = NurseID; Qry.Active: = True; // Заполнит вид списка с сдвигами, которые имеют медсестра ID для графа: = 0 до 10 начинают делать ListViewShifts.Items.Add (Qry.Fields [Count] .AsString); конец;
Wiliam Cardoso
1

голосов
1

ответ
66

Просмотры

Запуск от имени администратора блоков onDropped из DropTarget

Я пытаюсь вызвать это: MoveFileEx (PChar (ЦСИ), PChar (Dest), MOVEFILE_COPY_ALLOWED) Программа завершает часть копирования, но не удаляет файлы после копирования. Я думал, может быть, я должен запустить мое приложение с правами администратора, но в тот момент я, то onDropped событие моей DropTarget блокируется. Как я могу решить эту проблему?
Ali Ahmadi
1

голосов
1

ответ
72

Просмотры

Delphi - Передача ALT в Excel коды клавиш

Delphi RIO - У меня есть Excel плагин написан на Delphi. Я хотел написать программу, которая преобразует клетки, которые имеют содержание многоканального для содержания одной линии, в основном заменяя разрыв строки с пробелами. Я делаю это, заменив «ALT 0010» для космических символов. Под этим я подразумеваю, что я удерживать клавишу ALT вниз, а затем нажмите 0010 на цифровой клавиатуре. Это будет делать то, что я хочу. Теперь мне нужно запрограммировать эту функциональность. Я не могу найти правильный способ представления ALT 0010. Если бы я был заменить «!» с пространством в целом таблицу, я мог бы сделать это с помощью следующего кода. вар WholeSheet: ExcelRange; начать ... WholeSheet: = myActiveSheet.Cells; WholeSheet.Replace ( '', xlPart, xlByRows, False, False '!'); Когда я пытался смотреть на это с помощью захвата макроса Excel, я действительно путают ...
user1009073
1

голосов
4

ответ
7.8k

Просмотры

Сохранение значений в TBLOBField с помощью SQL

Я хочу, чтобы хранить изображения в базу данных с помощью команд SQL, я знаю другие способы, используя TBlobField.LoadFromFile и т.д., но мы делаем нашу собственная SQL команду для обновления базы данных, поэтому мне нужно это сделать. Как я должен идти об этом?
Sandeep Chandra
-1

голосов
0

ответ
21

Просмотры

Улучшение код для FastReport в Дельфах

Я использую следующий код для FastReport Но код не работает для меня я не имею ни малейшего представления о том, как исправить код, и я не очень опытный в работе с Delphi я был бы признателен, если вы поможете мне процедуру TfrmLossRun.btnPrnLossClick (Sender: TObject); вар s0, s1, s2: String; начать с UserSession делать начать Настройка Dir Locations s0: = WebApplication.UserCacheDir; s1: = GetTempFile (WebApplication.UserCacheDir, UserSessio n.sUserID + 'PDF'); s2: = WebApplication.UserCacheURL + ExtractFileName (S1); // Загрузка правильно Loss Run File frxRpt.LoadFromFile (webapplication.ApplicationPath + 'Lossrun.fr3'); frxRpt.Variables [ 'usrname']: = frCreateStr (sUserID); frxRpt.PrepareReport (истина); frPDFX.FileName: = s1; frxRpt.Export (frPDFX); frxRpt.Clear; WebApplication.NewWindow (с2); конец; конец;
Jack Crowder
-2

голосов
2

ответ
148

Просмотры

Сохраняя Delphi DFM файлы в синхронизации с их PAS файлами

У меня есть проект Delphi с большим количеством DFM файлов и соответствующих PAS-файлов. Я могу компилировать PAS путем восстановления только проект, но как восстановить и сохранить файлы DFM в синхронизации с их PAS файлами? Сейчас я получаю много «[Variable.field] не имеет соответствующего компонента. Удалите заявление?» запрашивает из IDE.
Tom Kelly
6

голосов
1

ответ
136

Просмотры

AttachConsole and 64 bit application

Функция AttachConsole WinAPI всегда возвращает истину, когда программа компилируется как 64-бит. Прежде всего, я объявил функцию следующим образом: функция AttachConsole (dwProcessId: DWORD): Bool; STDCALL; внешнее имя KERNEL32 'AttachConsole'; Тогда я называю функцию: если AttachConsole (DWORD (-1)), то .... Это хорошо работает, когда скомпилирован как 32-битное приложение, но при компиляции в 64-битном всегда возвращает истину. В документации не упоминается делать что-то особенное для 64-битного приложения. Как воспроизвести: Создать новую платформу VCL Application Set Target для Win64 Редактировать файл DPR выглядеть следующим образом: программа Project1; использует System.Types, WinApi.windows, Vcl.Forms, БЛОК1 в 'Unit1.pas' {Form1}; {$ R * .res} Функция AttachConsole (dwProcessId: DWORD): Bool; STDCALL; внешнее имя KERNEL32 ' AttachConsole '; начать если AttachConsole (DWORD (-1)), а затем начать WriteLn ( 'Hello World'); Выход; конец; Application.Initialize; Application.MainFormOnTaskbar: = True; Application.CreateForm (TForm1, Form1); Application.Run; конец. При работе под Win64, AttachConsole Retruns верно даже при запуске из Проводника.
Jens Borrisholt
1

голосов
0

ответ
60

Просмотры

Delphi Ручка кнопка Android «Обзор»

Использование Delphi Токио 10.2, есть способ для обработки события OnClick кнопки обзора (кнопка справа от андроида панели навигации)? Я думал о чем-то вроде кода выше: процедура TForm1.FormKeyUp (Sender: TObject; вар Key: Word; уаг KeyChar: Char; Сдвиг: TShiftState); начинать если (Key = ...), а затем начать // сделать что-то конец; конец; Вы знаете имя ключа кнопки Обзор? Кроме того, есть ли способ, чтобы полностью скрыть панель навигации? Изменить # 1 Я нашел временную solution..Pressing кнопку Обзор вызывает событие FormSaveState, поэтому я решил справиться с моей проблемой, воспользовавшись этим методом.
LLuca
1

голосов
0

ответ
131

Просмотры

Как, программно изменить поддержку / TLS SSL с помощью WinInet?

Иногда мне приходится иметь дело с «Advanced Tab» Свойства обозревателя, чтобы включить / отключить некоторые SSL / TLS протоколы для удовлетворения некоторых приложений. Теперь я хочу знать, если это возможно сделать, это включить / отключить programmaticaly, в связи приложения, эти протоколы. Это возможно? Если да, то каким образом?
Carlos Feitoza Filho
1

голосов
0

ответ
154

Просмотры

Using CreateFile to send PDF direct to a printer ignores bold fonts

Пожалуйста, имейте в виду, что этот код работает в модуле ISAPI, и мы предпочли бы не возиться с изменением, которое пользователь журналы приложений в качестве, так что обычный способ использования классов принтеров, вероятно, будет вариант нет. У меня есть следующий код: процедура WriteFileToPrinter (константный APrinterURL, AFilename: String); вар LHandle, LWritten: Cardinal; LFileStream: TStream; LMemoryStream: TMemoryStream; начинают LHandle: = CreateFile (PChar (APrinterURL), GENERIC_WRITE, 0, ноль, OPEN_ALWAYS, FILE_FLAG_WRITE_THROUGH, 0); если LHandle> 0, то попробуйте LFileStream: = TFileStream.Create (AFilename, fmOpenRead или fmShareDenyNone); попробуйте LMemoryStream: = TMemoryStream.Create; попробуйте LFileStream.Position: = 0; LMemoryStream.CopyFrom (LFileStream, LFileStream.Size); WriteFile (LHandle, LMemoryStream.Memory ^, LMemoryStream.Size, LWritten, ноль); наконец LMemoryStream.Free; конец; наконец LFileStream.Free; конец; наконец, CloseHandle (LHandle); конец; конец; Который успешно отправляет файл на принтер, и в то время как не все принтеры протестировали поддержку этого, есть одна разница на принтере, который делает: файл является PDF, и все смелые шрифты игнорируются. Я проверил, что на самом деле имеет PDF смелые шрифты в нем, и печать на том же принтере с помощью Acrobat Reader отпечатков, как и ожидалось. Принтер в вопросе является Brother MFC-9330CDW. Может быть, это только этот конкретный принтер, имеющий этот вопрос, но я думал, что я хотел бы спросить в случае, если это происходит с другими принтерами, и есть ли может быть альтернативным методом. наконец LFileStream.Free; конец; наконец, CloseHandle (LHandle); конец; конец; Который успешно отправляет файл на принтер, и в то время как не все принтеры протестировали поддержку этого, есть одна разница на принтере, который делает: файл является PDF, и все смелые шрифты игнорируются. Я проверил, что на самом деле имеет PDF смелые шрифты в нем, и печать на том же принтере с помощью Acrobat Reader отпечатков, как и ожидалось. Принтер в вопросе является Brother MFC-9330CDW. Может быть, это только этот конкретный принтер, имеющий этот вопрос, но я думал, что я хотел бы спросить в случае, если это происходит с другими принтерами, и есть ли может быть альтернативным методом. наконец LFileStream.Free; конец; наконец, CloseHandle (LHandle); конец; конец; Который успешно отправляет файл на принтер, и в то время как не все принтеры протестировали поддержку этого, есть одна разница на принтере, который делает: файл является PDF, и все смелые шрифты игнорируются. Я проверил, что на самом деле имеет PDF смелые шрифты в нем, и печать на том же принтере с помощью Acrobat Reader отпечатков, как и ожидалось. Принтер в вопросе является Brother MFC-9330CDW. Может быть, это только этот конкретный принтер, имеющий этот вопрос, но я думал, что я хотел бы спросить в случае, если это происходит с другими принтерами, и есть ли может быть альтернативным методом. и в то время как не все принтеры протестировали поддержку этого, есть одна разница на принтере, который делает: файл является PDF, и все смелые шрифты игнорируются. Я проверил, что на самом деле имеет PDF смелые шрифты в нем, и печать на том же принтере с помощью Acrobat Reader отпечатков, как и ожидалось. Принтер в вопросе является Brother MFC-9330CDW. Может быть, это только этот конкретный принтер, имеющий этот вопрос, но я думал, что я хотел бы спросить в случае, если это происходит с другими принтерами, и есть ли может быть альтернативным методом. и в то время как не все принтеры протестировали поддержку этого, есть одна разница на принтере, который делает: файл является PDF, и все смелые шрифты игнорируются. Я проверил, что на самом деле имеет PDF смелые шрифты в нем, и печать на том же принтере с помощью Acrobat Reader отпечатков, как и ожидалось. Принтер в вопросе является Brother MFC-9330CDW. Может быть, это только этот конкретный принтер, имеющий этот вопрос, но я думал, что я хотел бы спросить в случае, если это происходит с другими принтерами, и есть ли может быть альтернативным методом.
Dave Nottage
1

голосов
0

ответ
168

Просмотры

Delphi TMapView: Любой способ отключить масштабирование на DoubleTap?

Я использую компонент TMapView в проекте FireMonkey. У меня есть eventhandlers, что огонь, когда пользователь дважды нажимает на маркер (а также отдельное событие для одного щелчка мыши). Тем не менее, каждый раз, когда двойное нажатие на маркер карты автоматически наводится, в дополнение к стрельбе мой случай. Я смотрел через doucmentation, но я до сих пор найти свойство или метод, который обрабатывает это. Итак, есть ли способ отключить эту функцию в TMapView.
Mint
1

голосов
0

ответ
179

Просмотры

Как отменить TRESTRequest?

Я потребляя услуги REST с помощью TRESTRequest. Иногда пользователи жалуются на очень медленных repsonses, поэтому они хотят, чтобы иметь возможность отменить REST-запросы. К сожалению, нет ничего похожего на CancellationToken, что я мог бы перейти к методам TRESTRequest.Execute или TRESTRequest.ExecuteAsync, чтобы отменить запрос, пока он работает. Я узнал, что я могу использовать THTTPClient.OnReceiveData, когда я хочу, чтобы прервать прием данных. Но я не могу найти способ, чтобы получить доступ к внутренней HttpClient просьбы в. Как я могу отменить бегущую REST-запрос?
Wosi
1

голосов
0

ответ
146

Просмотры

приложений клиент-сервер Delphi DCOM, на закрытии сервера дает «Системная ошибка 1400. Недопустимый дескриптор окна»

Я работаю над приложением сервера клиента в Дельфах 10.2.2, где используется DCOM соединение. Серверное приложение было использование файла TLB, который GUID в нем. Когда клиентское приложение выполнять запуске приложения сервера и, когда клиентское приложение закрывается сервер также закрыт, и, таким образом, следующая ошибка возникает «системная ошибка 1400. Недопустимый дескриптор окна». Сообщение об ошибке Пытаясь выяснить, как приложение сервера triggerred от клиента еха когда Tdcomconnection.connected устанавливается истина. Если возможно, пожалуйста, поделитесь ссылкой, попавшую клиент и сервер приложения COM работает Я добавил изображение сообщения, по щелчку отмените я получаю "Ошибка системы 1400. Недопустимый дескриптор окна. Во-первых отображается это сообщение. на стороне сервера есть только один used.I TLB файл не знаю, как он будет создан.
Tanavi
1

голосов
1

ответ
89

Просмотры

Как и в Delphi на Ctrl + A, чтобы выделить все строки в DBGrid

даже при нажатии кнопки выбрать все строки в DBGrid, можно выбрать все строки, когда Ctrl + A нажата? Функция GridSelectAll (Сетка: TDBGrid): Longint; начать результат: = 0; Grid.SelectedRows.Clear; с Grid.Datasource.DataSet делать начинаются в первую очередь; DisableControls; попробуйте пока не EOF действительно начинают Grid.SelectedRows.CurrentRowSelected: = True; вкл (результат); Следующий; конец; наконец EnableControls; конец; конец; конец; Процедура TForm2.btn13Click (Sender: TObject); начинают GridSelectAll (dbgrd1); конец;
ariana
1

голосов
1

ответ
82

Просмотры

Delphi появление подсказки при наведении курсора мыши в DBGrid

Как это сделать, что произойдет, когда мы наведем курсор мыши в DBGrid, если поле имеет требуемое значение, будет появляться подсказка? если qry1.fieldbyname ( 'PASSENGER_TYPE') = 'AsString INF', то dbgrd1.Hint: 'младенец';. Порылся в свойствах DBGrid, сделанных в ShowHint = True. Все заработало, НО когда не по значению, и когда я вызываю курсор в DBGrid, как сделать это было, когда я направлять на само значение?
delphi
1

голосов
0

ответ
161

Просмотры

Read GPS data through UDP with Indy in Delphi

У меня есть устройство GPS отправляет данные на мой IP через UDP. Это, как я прочитал UDP порт: процедура TForm3.IdUDPServer1UDPRead (AThread: TIdUDPListenerThread; Const AData: TIdBytes; ABinding: TIdSocketHandle); начинают тзд: = BytesToString (AData); Memo1.Lines.Add ( 'GPS:' + MSG); конец; Я получаю активность, но все, что я вижу, это данные, как это: GPS: GPS:: Обновление: Я сделал некоторые испытания с компонентом ipwUDPPort от IP * Works. То же самое поведение - все, что я вижу, это пустое пространство: процедура TFormUdpecho.UDPPort1DataIn (Sender: TObject; Datagram: String; Const SourceAddress: String; SourcePort: Integer); начать lTrack.Items.Add (SourceAddress + ':' + Datagram); конец; Я сделал еще один тест с Инди: процедура TForm3.IdUDPServer1UDPRead (AThread: TIdUDPListenerThread; константный ADATA: TIdBytes; ABinding: TIdSocketHandle); начать Сообщ: = IntToStr (длина (AData)); Memo1.Lines.Add ( 'GPS:' + MSG); конец; И результат: данные: 126 данных: 126 Данные: 127 данных: 127 данных: 127
Alex R.
1

голосов
0

ответ
286

Просмотры

TWebBrowser OpenStreetMap геолокации отказано

Delphi - Токио 10,2 я, следуя примеру «LocationDemo» предоставленный Embarcadero Rad Studio (URL), я уже обрабатывать разрешение местоположения для приложения, но я не могу использовать «Показывать мое местоположение» во время просмотра карты из OpenStreetMap. Когда я пытаюсь, я получаю следующее сообщение об ошибке: «Ошибка геолокации: Пользователь отказано Geolocation». Если я использую Chrome, вместо моего приложения с компонентом TWebBrowser, браузер просит разрешить локализацию. Что я должен сделать, чтобы мое приложение сделать то же самое? Редактировать Грубое расположение, прекрасное расположение, интернет проверяются внутри проекта> Параметры> Права пользователя URL-адрес назначается метод Navigate компонента TWebBrowser имеет HTTPS в качестве протокола
LLuca
1

голосов
0

ответ
89

Просмотры

Получение хранимой процедуры SQL Server Sql с помощью Delphi

Я пытаюсь отобразить T-SQL хранимой процедуры в моем DELPHI приложения. Я понятия не имею, можно ли с помощью ADO или Firedac компонентов. Я могу получить список хранимых процедур с использованием firedac, но не SQL. Необходимо указать на правую сторону, так что я могу добавить эту функцию в моем приложении.
Khawar
1

голосов
2

ответ
174

Просмотры

Как я могу создать Интерактивная панель опций Подобно TeamViewer (скрыть / показать)?

Я не знаю, как назвать интерактивную панель инструментов, как TeamViewer есть. Мой вопрос очень цель: Как я могу создать интерактивную панель, где панель будет скрывать / показывать в любой момент? Пример: EDIT: Я нашел возможное решение (код ниже). Теперь я хочу, чтобы вставить «Кнопка» приклеены на правой стороне и ниже панели. Как я могу это сделать? Процедура TForm1.btn1Click (Sender: TObject); начинают AnimateWindow (Panel1.Handle, 800, AW_SLIDE или AW_VER_NEGATIVE или AW_HIDE); конец; Процедура TForm1.btn2Click (Sender: TObject); начинают AnimateWindow (Panel1.Handle, 800, AW_SLIDE или AW_VER_POSITIVE или AW_ACTIVATE); конец;
1

голосов
1

ответ
299

Просмотры

Как отключить аппаратное ускорение другого приложения, которые используют CEF для отображения веб-страниц?

Я хочу скриншот HTML части (например: класс Chrome_RenderWidgetHostHWND) из приложения, которые используют CEF для отображения веб-страниц. Пробовал с помощью BitBlt и PrintWindow, но только можно захватить черный экран, так как приложение, которое я хочу захвата использует аппаратное ускорение. Это старая беда, которая была решена на Tradicional навигатора Google Chrome отключить эту опцию, что сказать: использование аппаратного ускорения при Avaiable, изменение Somes настройки в JSon файл Google Chrome. Тогда я хочу знать, если существует какую-то возможность сделать то же самое, и в этом случае предотвратить или отключить этот ресурс для детерминированного приложения, которые используют CEF? Все, что я видел по отношению к этой возможности было только отключить внутри приложения, которые используют CEF, а не вне их. Спасибо любого относительного предложения или решением!
1

голосов
0

ответ
49

Просмотры

Ошибка при кодировании Base64 строки через сервер DataSnap

Метод сервера DataSnap, который возвращает строку base64 дает мне ошибку, когда я проверить его на файл PDF. Другие файлы PDF работать правильно, только разница в том, этот PDF-файл достаточно больше, чем другие - 78MB. HTTP / 1.1 500 Internal Server Error Сервер: функция TdmData.GetJobDocumentFile: строка; вар Ф.П.: строка; начать результат: = Emptystr; с fdQuery1 же начать Close; SQL.Clear; SQL.Text: 'выберите doc_filename из DBA.documents'; Открыто; FP: = FieldByName ( 'doc_filename') AsString;. Близко; UnPrepare; конец; если (Fp Emptystr) и FileExists (Fp), а затем начать результат: = EncodeFile (FP); конец; конец; Функция TdmData.EncodeFile (Const имя_файла: строка): AnsiString; вар поток: TMemoryStream; начать результат: = EmptyAnsiStr; Поток: = TMemoryStream.Create; попробуйте Stream.LoadFromFile (Filename); Результат: = EncodeBase64 (stream.Memory, stream.Size); наконец Stream.Free; конец; конец; функционировать TServerMethods1.GetDocumentFile: строка; начать попробовать Результат: = dmData.GetJobDocumentFiledata; наконец GetInvocationMetadata.CloseSession: = True; конец; конец; КЛИЕНТ: функция TdmData.GetJobDocumentFileData: строка; вар ServerMethods1Client: TServerMethods1Client; начать ServerMethods1Client: = ноль; ServerMethods1Client: = TServerMethods1Client.Create (DSRestConnection1); попробуйте Результат: = ServerMethods1Client.GetJobDocumentFileData; наконец ServerMethods1Client.Free; ServerMethods1Client: = ноль; конец; конец; Могу ли я что-то пропустил? Существуют ли ограничения при отправке / получении больших строк с помощью DataSnap? Любая дополнительная информация, было бы здорово, спасибо. функционировать TServerMethods1.GetDocumentFile: строка; начать попробовать Результат: = dmData.GetJobDocumentFiledata; наконец GetInvocationMetadata.CloseSession: = True; конец; конец; КЛИЕНТ: функция TdmData.GetJobDocumentFileData: строка; вар ServerMethods1Client: TServerMethods1Client; начать ServerMethods1Client: = ноль; ServerMethods1Client: = TServerMethods1Client.Create (DSRestConnection1); попробуйте Результат: = ServerMethods1Client.GetJobDocumentFileData; наконец ServerMethods1Client.Free; ServerMethods1Client: = ноль; конец; конец; Могу ли я что-то пропустил? Существуют ли ограничения при отправке / получении больших строк с помощью DataSnap? Любая дополнительная информация, было бы здорово, спасибо. функционировать TServerMethods1.GetDocumentFile: строка; начать попробовать Результат: = dmData.GetJobDocumentFiledata; наконец GetInvocationMetadata.CloseSession: = True; конец; конец; КЛИЕНТ: функция TdmData.GetJobDocumentFileData: строка; вар ServerMethods1Client: TServerMethods1Client; начать ServerMethods1Client: = ноль; ServerMethods1Client: = TServerMethods1Client.Create (DSRestConnection1); попробуйте Результат: = ServerMethods1Client.GetJobDocumentFileData; наконец ServerMethods1Client.Free; ServerMethods1Client: = ноль; конец; конец; Могу ли я что-то пропустил? Существуют ли ограничения при отправке / получении больших строк с помощью DataSnap? Любая дополнительная информация, было бы здорово, спасибо. Функция TdmData.GetJobDocumentFileData: строка; вар ServerMethods1Client: TServerMethods1Client; начать ServerMethods1Client: = ноль; ServerMethods1Client: = TServerMethods1Client.Create (DSRestConnection1); попробуйте Результат: = ServerMethods1Client.GetJobDocumentFileData; наконец ServerMethods1Client.Free; ServerMethods1Client: = ноль; конец; конец; Могу ли я что-то пропустил? Существуют ли ограничения при отправке / получении больших строк с помощью DataSnap? Любая дополнительная информация, было бы здорово, спасибо. Функция TdmData.GetJobDocumentFileData: строка; вар ServerMethods1Client: TServerMethods1Client; начать ServerMethods1Client: = ноль; ServerMethods1Client: = TServerMethods1Client.Create (DSRestConnection1); попробуйте Результат: = ServerMethods1Client.GetJobDocumentFileData; наконец ServerMethods1Client.Free; ServerMethods1Client: = ноль; конец; конец; Могу ли я что-то пропустил? Существуют ли ограничения при отправке / получении больших строк с помощью DataSnap? Любая дополнительная информация, было бы здорово, спасибо. конец; Могу ли я что-то пропустил? Существуют ли ограничения при отправке / получении больших строк с помощью DataSnap? Любая дополнительная информация, было бы здорово, спасибо. конец; Могу ли я что-то пропустил? Существуют ли ограничения при отправке / получении больших строк с помощью DataSnap? Любая дополнительная информация, было бы здорово, спасибо.
6String_Coder
1

голосов
1

ответ
182

Просмотры

Как обрезать строку до н полукокса?

Строка Unicode, может содержать суррогатные пары (особенно смайлики). Теперь мне нужно укоротить эту строку п символов. Как я могу сделать это безопасно, не нарушая никаких смайликов?
loki
1

голосов
0

ответ
58

Просмотры

Конкретизация локальной переменной через другую функцию

Я использую Delphi 10.2.3 Токио и VCL. Я создаю функцию, которая вызывает другую функцию для создания экземпляра локальной переменной в первой функции, например: Процедура TForm1.SetQuery (вар aQuery: TFDQuery); начать, если нет (Assigned (aQuery)), то aQuery: = TFDQuery.Create (сам); // Никогда не выполняется ??? aQuery.Connection: = self.FDConnection1; // Нарушение доступа -> aQuery не создание экземпляр! конец; Процедура TForm1.DoSomething; вар vQry: TFDQuery; начинают SetQuery (vQry); конец; Линии aQuery: = TFDQuery.Create (само); никогда не выполняется. Таким образом, это вызывает нарушение прав доступа впоследствии. Что мне не хватает?
ffert2907
1

голосов
1

ответ
652

Просмотры

Delphi - Массив AnsiChar в строку и наоборот

Я был дан SDK, который принимает шаблон отпечатка пальца от устройства, я должен хранить это в базе данных SQL, а затем снова к устройству FP. Шаблон данных SDK FP определяется как template_data: массив [0..1568] из AnsiChar ;. Шаблон хранится в базе данных ОК путем преобразования данных шаблона в строку, используя код ниже: SetString (с, user.template_data [I] .template_data, user.template_data [I] .template_length); Проблема возникает при преобразовании строки обратно из базы данных для данных шаблонов, это только копирует первые 3 символа при использовании StrLCopy StrLCopy (PChar (@ user.template_data [0] .template_data), PChar (s), FieldByName ( 'FPLen «) .AsInteger); При отладке коды я замечаю, что есть 4 символа в шаблоне является нулевым символом, так что я думаю, именно поэтому только первые 3 копируется.
Dazzer
1

голосов
0

ответ
127

Просмотры

Как сделать TidFTPServer работать с SSL

Я ищу, например, но не может найти одну работу. Как я могу сделать TidFTPServer приема SSL соединения (пароль и данные зашифрованным)? Я понимаю, что мне нужно использовать IdServerIOHandlerSSLOpenSSL, но я не могу заставить его работать Это код, который я сделал: fIdServerIOHandlerSSLOpenSSL: = TIdServerIOHandlerSSLOpenSSL.Create (ноль); fIdServerIOHandlerSSLOpenSSL.SSLOptions.SSLVersions: = [TIdSSLVersion.sslvSSLv2, TIdSSLVersion.sslvSSLv23, TIdSSLVersion.sslvSSLv3, TIdSSLVersion.sslvTLSv1, TIdSSLVersion.sslvTLSv1_1, TIdSSLVersion.sslvTLSv1_2]; fFTPServer.IOHandler: = fIdServerIOHandlerSSLOpenSSL; У меня есть ошибка на сервере FTP: TIDFtpServer: Exception класс EIdOSSLUnderlyingCryptoError с сообщением «Ошибка принимать соединения с помощью SSL. Ошибка: 1408A0C1: SSL процедура: ssl3_get_client_hello: нет общего шифр
loki
0

голосов
0

ответ
6

Просмотры

Как установить виртуальный TreeView в Delphi 10.3 Рио?

В настоящее время Virtual Treeview поставляется с INSTALL.txt, что на настоящий момент, как в Windows 2008 и Delphi xe5. Я пытался следовать равноценные шаги для Delphi 10.3 и ВТВ появляется для установки (появится в палитре, может быть добавлен в форму), но компилятор выдает ошибку: «Не удается разрешить имя единицы„VirtualTrees“в строке ххх», который является заявлением, в котором использует VirtualTrees перечислено. Это происходит, например, с «Minimal» демо ВТВ в. При установке пакетов \ RAD Studio 10.3 \ VirtualTreeView.groupproj, я отметил, что платформа была установлена ​​на Win 32, а минимальный проект также. Это новая установка Delphi 10.3 CE и свежих загрузки ТВТ от Jam (т.е. не из GitHub). Как ни странно, если в Минимальной проекте я переключаюсь платформа для Win 64, то компилятор может найти единицы VirtualTrees, скомпилировать программу, и он работает. Так что я думаю, это просто то, о чем DCUs генерируется, где по сравнению с путем или что-то. Но так как я специально не устанавливал ничего другого, чем то, что groupproj и демо Minimal проекта были установлены, и все, казалось, должен быть установлен на платформе Win32, я смущенный. Для справки, вот мой перевод INSTALL.txt: 1. Файл> Открыть группу проекта «... \ Packages \ RAD Studio 10.3 \ VirtualTreeView.groupproj» 2. Щелкните правой кнопкой мыши на „VirtualTreesD26.bpl“ и нажмите кнопку „Установить“ 3 . Перейдите в раздел "Инструменты> Настройки> Язык> Delphi Options> Библиотека> Библиотека Путь> [...]" Перейдите в папку "Source" из VirtualTreeView, нажмите кнопку "OK", "Добавить", "OK", "Сохранить" м думая, что это просто то, о чем DCUs генерируется, где по сравнению с путем или что-то. Но так как я специально не устанавливал ничего другого, чем то, что groupproj и демо Minimal проекта были установлены, и все, казалось, должен быть установлен на платформе Win32, я смущенный. Для справки, вот мой перевод INSTALL.txt: 1. Файл> Открыть группу проекта «... \ Packages \ RAD Studio 10.3 \ VirtualTreeView.groupproj» 2. Щелкните правой кнопкой мыши на „VirtualTreesD26.bpl“ и нажмите кнопку „Установить“ 3 . Перейдите в раздел "Инструменты> Настройки> Язык> Delphi Options> Библиотека> Библиотека Путь> [...]" Перейдите в папку "Source" из VirtualTreeView, нажмите кнопку "OK", "Добавить", "OK", "Сохранить" м думая, что это просто то, о чем DCUs генерируется, где по сравнению с путем или что-то. Но так как я специально не устанавливал ничего другого, чем то, что groupproj и демо Minimal проекта были установлены, и все, казалось, должен быть установлен на платформе Win32, я смущенный. Для справки, вот мой перевод INSTALL.txt: 1. Файл> Открыть группу проекта «... \ Packages \ RAD Studio 10.3 \ VirtualTreeView.groupproj» 2. Щелкните правой кнопкой мыши на „VirtualTreesD26.bpl“ и нажмите кнопку „Установить“ 3 . Перейдите в раздел "Инструменты> Настройки> Язык> Delphi Options> Библиотека> Библиотека Путь> [...]" Перейдите в папку "Source" из VirtualTreeView, нажмите кнопку "OK", "Добавить", "OK", "Сохранить" т конкретно установить что-либо иное, чем то, что groupproj и демо Minimal проекта были установлены, и все, казалось, должен быть установлен на платформе Win32, я смущенный. Для справки, вот мой перевод INSTALL.txt: 1. Файл> Открыть группу проекта «... \ Packages \ RAD Studio 10.3 \ VirtualTreeView.groupproj» 2. Щелкните правой кнопкой мыши на „VirtualTreesD26.bpl“ и нажмите кнопку „Установить“ 3 . Перейдите в раздел "Инструменты> Настройки> Язык> Delphi Options> Библиотека> Библиотека Путь> [...]" Перейдите в папку "Source" из VirtualTreeView, нажмите кнопку "OK", "Добавить", "OK", "Сохранить" т конкретно установить что-либо иное, чем то, что groupproj и демо Minimal проекта были установлены, и все, казалось, должен быть установлен на платформе Win32, я смущенный. Для справки, вот мой перевод INSTALL.txt: 1. Файл> Открыть группу проекта «... \ Packages \ RAD Studio 10.3 \ VirtualTreeView.groupproj» 2. Щелкните правой кнопкой мыши на „VirtualTreesD26.bpl“ и нажмите кнопку „Установить“ 3 . Перейдите в раздел "Инструменты> Настройки> Язык> Delphi Options> Библиотека> Библиотека Путь> [...]" Перейдите в папку "Source" из VirtualTreeView, нажмите кнопку "OK", "Добавить", "OK", "Сохранить"
gwideman
4

голосов
2

ответ
133

Просмотры

Что эквивалент байтового массива (Byte []) в Delphi с нулевым прекращением целочисленного?

Я застрял в этой беде, где компилятор говорит: Несовместимые типы: «AnsiChar» и «Integer» до последнего элемента массива AnsiChar, то есть целое число, которое является нулевой терминацией. Как это исправить? С ++ код: статические Const BYTE MyArray [] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'Н', 'I', 0}; Розетки; // Пример использования: если (Send (s, (символ *) MyArray, SizeOf (MyArray), 0)
BrowJr
1

голосов
0

ответ
305

Просмотры

Indy TIdHTTP changes my authorization header from bearer to basic?

Delphi XE7 и Indy 10: Я пытаюсь связаться с сервером отдыха, который требует авторизации: Bearer XXXXXXX в заголовке HTTP вызова я делаю следующее в моем коде: ... https.Request.Clear; https.Request.CustomHeaders.Clear; https.Request.BasicAuthentication: = ложь; https.Request.Accept: = 'приложения JSON'; https.Request.ContentType: = 'применение / JSON'; Маркер: = get_access_token; Https.Request.CustomHeaders.AddValue ( 'Авторизация', 'Канал' + маркер); JSON: = https.post (base_api, reqjson); Как раз перед POST, то содержание request.headers является (ноль, [], $ 31F28C0, # 0, '', # 0, False, 0, ноль, True, (( 'Разрешение: Знаменосец XXXXXXXXXXX ... х', ноль ), ( '', ноль), ( '', ноль), ( '', ноль)), 1, 4, False, dupIgnore, False, (ноль, ноль), (Ноль, ноль), False, ':', True, True, 2147483647, QuoteHTTP) Но когда я проверяю idlog отладки он показывает: POST xxxxxxxxxxxxxxxxxxx Content-Type: приложение / JSon Content-Length: 629 Авторизация: Basic XXXXXXXXXXXXXX ... ххх Ведущий: xxxxxxxxxxxxxxxxxxxx Accept: приложения JSON Accept-Encoding: идентичность User-Agent: Mozilla / 3.0 (совместимый; Indy Library) кажется, Носителем превращается в Basic ?? Как избежать этого?
Ib Elfving
1

голосов
1

ответ
85

Просмотры

DELPHI xe5 и dbxjson - tojson

Мне нужно создать программу, которая работает на Win XP (старый сервер) и, следовательно, он должен быть запрограммирован в Delphi xe5. Программа должна опубликовать JSON на веб-сайт (с Инди), и он работает как сон под XE7, но я не могу заставить его работать под xe5 из-за национальные символы в значениях JSon, я думаю. Я создаю в JSON объекта TJSONObject и под XE7 я получить сбежавший JSON с функцией obj.tojson и после этого Wi Indy HTTP. Функция .tojson не существует в xe5. Кто-нибудь знает, как получить то же самое в xe5 (будут сброшены .tojson, не .ToString) и возвращать их в качестве строки?
Ib Elfving
1

голосов
0

ответ
287

Просмотры

JSON к наборам из Дельф в FastReport

Я создаю приложение на Дельфи Токио, который может послать наборы данных FastReport. Приложение Получать JSon объект, который я конвертировать в JSONArray с этим код вар ХА: TJSONArray; JV: TJSONValue; о: TJSONObject; JP: TJSONPair; начинают JV: = TJSONObject.ParseJSONValue ({ "пользователь": [{ "Новичок": "EMER ALVARADO", "ЗНАК": "маркер", "REPORTE": "reporte1"}], "datasets1": [{ "DTEXT1 ":" ЖУАН ДЭНИЕЛ ДЕ ЛЕОН», "DTEXT2": "10103", "DTEXT3": "UROLOGIA", "DTEXT4": "3", "DTEXT5": "2", "DTEXT6": "NEGATIVO"}] }); O: = JV, как TJSONObject; JP: = report.Get ( 'datasets1'); JA: = jp.JsonValue, как TJSONArray; Мне нужно преобразовать этот «Ja» JSONArray в TfrxDataset во время выполнения. В myreport.fr3 у меня есть MasterData1 и там я добавить записку с последующей: [RF1.DTEXT1]. В моей VCL у меня есть frxDBDataset с именем = FR1. Я понятия не имею, что я должен сделать, чтобы отправить Jeson в качестве наборов данных к отчету. Спасибо
1

голосов
0

ответ
99

Просмотры

Можно ли иметь 2 действия в проекте Delphi Android, где же вторая активность показывает простую форму после запуска?

Можно ли иметь одну стандартную активность (com.embarcadero.firemonkey.FMXNativeActivity) и другой FMX на основе деятельности в рамках одного проекта Delphi Android, где же вторая активность показывает простую форму после запуска?
pudnivec74
1

голосов
0

ответ
203

Просмотры

Delphi 7 - Is it possible to get Call-Stack Information outside an exception?

Я в настоящее время пытается реализовать ошибки / Bug-Report функцию в нашем программном обеспечении, которое посылает по электронной почте в нашу службу поддержки-адресу. Я подумал, что было бы полезно, чтобы получить стек-информацию в то время, когда пользователь уведомляется об ошибке, чтобы увидеть, как он туда попал, схожее с Call-Stack-Trace в среде IDE. Все примеры получения дампа стека, что я мог бы найти это из внутри Exception, используя такие инструменты, как MadExcept или EurekaLog. Обычно мы стараемся избегать try..except блоков, хотя, мы проверяем значение внутри функции и отображение ошибки с функцией MessageDlg (..) обычаем, если что-то не так. Я хотел бы знать, если это возможно, чтобы получить информацию о вызове стеки вне исключения и как я могу это сделать. Например, если пользователь нажимает на кнопки процедуры ButtonClick () начинают DoSomething (4); конец; Функция DoSomething (SomeVal: целое число): Boolean; начинать если затем someVal> 2 результат: = DoSomethingDifferent (someVal) еще результат: = ContinueWithXXX; конец; функционировать DoSomethingDifferent (errorVal: целое число): Boolean; начинать если ErrorVal> 3, то MessageDlg (......) конец; Я хотел бы получить следующую информацию: 1. ButtonClick () 2. DoSomething (4) 3. DoSomethingDifferent (4) и прикрепить его к письму. Edit: На данный момент, я не использую 3 инструменты сторонних производителей, ни программного обеспечения, чтобы получить стек вызовов, как это потребует, чтобы убедить высшие бонусы, чтобы приобрести лицензию. Я хотел бы знать, если получение дампа стека вызовов можно без таких инструментов. хотел бы получить следующую информацию: 1. ButtonClick () 2. DoSomething (4) 3. DoSomethingDifferent (4) и прикрепить его к письму. Edit: На данный момент, я не использую 3 инструменты сторонних производителей, ни программного обеспечения, чтобы получить стек вызовов, как это потребует, чтобы убедить высшие бонусы, чтобы приобрести лицензию. Я хотел бы знать, если получение дампа стека вызовов можно без таких инструментов. хотел бы получить следующую информацию: 1. ButtonClick () 2. DoSomething (4) 3. DoSomethingDifferent (4) и прикрепить его к письму. Edit: На данный момент, я не использую 3 инструменты сторонних производителей, ни программного обеспечения, чтобы получить стек вызовов, как это потребует, чтобы убедить высшие бонусы, чтобы приобрести лицензию. Я хотел бы знать, если получение дампа стека вызовов можно без таких инструментов.
Viktor Pagels
1

голосов
0

ответ
77

Просмотры

Как запросить связанные с безопасностью Win32_NTLogEvent в Delphi

Установите objWMIService = GetObject ( "winmgmts: {(безопасность)} корень / CIMv2") "Создание обработчика событий, чтобы поймать события безопасности Set objEventSink = WScript.CreateObject ( "WbemScripting.SWbemSink", "eventSink_") objWMIService.ExecNotificationQueryAsync objEventSink" SELECT * FROM __InstanceCreationEvent ГДЕ TargetInstance ISA 'Win32_NTLogEvent' И TargetInstance.Logfile = 'Безопасность' И TargetInstance.EventType = 5 И (TargetInstance.EventIdentifier = 529 ИЛИ TargetInstance.EventIdentifier = 4625) И (TargetInstance.SourceName = 'Безопасность' ИЛИ ​​TargetInstance. SourceName = «Microsoft-Windows-Security-аудит»)»Я не получаю способ создать Wmi объект с этими атрибутами. Может кто-то наставит меня на правильный путь, как создать объект Wmi в Delphi с требуемыми атрибутами? Создание обработчика событий, чтобы поймать события безопасности Set objEventSink = WScript.CreateObject ( "WbemScripting.SWbemSink", "eventSink_") objWMIService.ExecNotificationQueryAsync objEventSink, «SELECT * FROM __InstanceCreationEvent WHERE TargetInstance ISA 'Win32_NTLogEvent' И TargetInstance.Logfile = 'Безопасность' И TargetInstance .EventType = 5 AND (TargetInstance.EventIdentifier = 529 ИЛИ TargetInstance.EventIdentifier = 4625) И (TargetInstance.SourceName = 'Безопасность' OR TargetInstance.SourceName = 'Microsoft-Windows-Security-аудит')»Я не получаю путь создать Wmi объект с этими атрибутами. Может кто-то наставит меня на правильный путь, как создать объект Wmi в Delphi с требуемыми атрибутами? Создание обработчика событий, чтобы поймать события безопасности Set objEventSink = WScript.CreateObject ( "WbemScripting.SWbemSink", "eventSink_") objWMIService.ExecNotificationQueryAsync objEventSink, «SELECT * FROM __InstanceCreationEvent WHERE TargetInstance ISA 'Win32_NTLogEvent' И TargetInstance.Logfile = 'Безопасность' И TargetInstance .EventType = 5 AND (TargetInstance.EventIdentifier = 529 ИЛИ TargetInstance.EventIdentifier = 4625) И (TargetInstance.SourceName = 'Безопасность' OR TargetInstance.SourceName = 'Microsoft-Windows-Security-аудит')»Я не получаю путь создать Wmi объект с этими атрибутами. Может кто-то наставит меня на правильный путь, как создать объект Wmi в Delphi с требуемыми атрибутами? "EventSink_") objWMIService.ExecNotificationQueryAsync objEventSink, «SELECT * FROM __InstanceCreationEvent ГДЕ TargetInstance ISA 'Win32_NTLogEvent' И TargetInstance.Logfile = 'Безопасность' И TargetInstance.EventType = 5 И (TargetInstance.EventIdentifier = 529 ИЛИ TargetInstance.EventIdentifier = 4625) И ( TargetInstance.SourceName = 'Безопасность' OR TargetInstance.SourceName = 'Microsoft-Windows-Security-аудит')»Я не получаю способ создать Wmi объект с этими атрибутами. Может кто-то наставит меня на правильный путь, как создать объект Wmi в Delphi с требуемыми атрибутами? "EventSink_") objWMIService.ExecNotificationQueryAsync objEventSink, «SELECT * FROM __InstanceCreationEvent ГДЕ TargetInstance ISA 'Win32_NTLogEvent' И TargetInstance.Logfile = 'Безопасность' И TargetInstance.EventType = 5 И (TargetInstance.EventIdentifier = 529 ИЛИ TargetInstance.EventIdentifier = 4625) И ( TargetInstance.SourceName = 'Безопасность' OR TargetInstance.SourceName = 'Microsoft-Windows-Security-аудит')»Я не получаю способ создать Wmi объект с этими атрибутами. Может кто-то наставит меня на правильный путь, как создать объект Wmi в Delphi с требуемыми атрибутами?
Eduardo Hernandez
1

голосов
1

ответ
103

Просмотры

Получить текущую трассировку стека от запущенного процесса

У меня есть приложение Delphi с jdbg файлом внутри двоичного файла (используя MakeJclDbg из JCLDebug), и мне нужно, чтобы получить текущие трассировки стеки (не требуется от исключения) вне приложения из другого приложения. Есть ли способ сделать это? Сегодня мы уже делаем это mannualy используя класс TJclTD32InfoScanner, но это не работает с jdbg внутри двоичного файла.
Rodrigo Caetano
1

голосов
0

ответ
61

Просмотры

Передислокации Delphi приложения для Android на устройство удаляет сохраненный файл данных

У меня есть приложение для Android, который загружает файл CSV на событии OnActivate и сохраняет файл (отредактированный) на OnClose события. Это все работает отлично. Однако, если я изменить мое приложение и перераспределять мое целевое устройство, текстовый файл удаляется, и все данные будут потерян. Есть ли способ, чтобы остановить это поведение. Стоит отметить, что если я перераспределять приложение из Delphi в то время как приложение активно на целевом устройстве, данные / текстовый файл не будет удален. Чтобы загрузить файл, я использую ... MyList.LoadFromFile (System.ioutils.TPath.GetDocumentsPath + System.SysUtils.PathDelim + datalist.csv '); Чтобы сохранить файл, я использую ... MyText.SaveToFile (System.ioutils.TPath.GetDocumentsPath + System.SysUtils.PathDelim + datalist.csv '); Я предполагаю, что файл сохраняется в папке приложения по умолчанию на целевом устройстве. Любая помощь очень ценится.
WobblyBob
1

голосов
1

ответ
183

Просмотры

Загрузить PNG ресурс TGPImage

Я хотел бы загрузить PNG ресурс TGPImage. Все примеры, которые я нашел, использовать Bitmap Draw, который теряет прозрачность. Следующий пример приводит только в черной картинке: _shipImage: = TGPImage.Create (); мс: = TMemoryStream.Create (); PNG: = TPngImage.Create; попробуйте png.LoadFromResourceName (HINSTANCE, 'SHIP_RIGHT'); ms.Position: = 0; png.SaveToStream (мс); ms.Position: = 0; са: = TStreamAdapter.Create (мс); _shipImage.FromStream (са); наконец, //sa.Free (); // Неверный указатель операции png.Free (); ms.Free (); конец; После также не работает: _shipImage: = TGPImage.Create (); RS: = TResourceStream.Create (HINSTANCE, 'SHIP_RIGHT', RT_RCDATA); rs.Position: = 0; са: = TStreamAdapter.Create (RS, soOwned); _shipImage.FromStream (са);
Paul
1

голосов
0

ответ
113

Просмотры

Обнаружение ли файл EXE заблокирован работает?

Мне нужно подписать файл .exe с .. \ x64 \ signtool.exe. Однако, это, очевидно, не работает, а .exe работает программа, которая блокирует предположительно, EXE-файл. Поэтому я стараюсь, чтобы обнаружить, является ли .exe файл заблокирован с помощью этой функции: функция IsExeFileLocked (Const AFilename: строка): Boolean; вар F: TFileStream; начать TRY F: = TFileStream.Create (AFilename, fmOpenRead или fmShareDenyNone); попробуйте Результат: = False; наконец F.Free; конец; кроме Result: = True; конец; конец; Но эта функция всегда возвращает значение False, даже если .exe программа работает! Так как я могу обнаружить, является ли файл .exe заблокирован работает?
user1580348
1

голосов
0

ответ
58

Просмотры

Почему подсказка кода не появляется в Delphi XE3?

Я использую Delphi XE3 для разработки приложений FireMonkey. В прошлом, есть функция подсказки коды, так что, когда я закончу название формы, как это: MainForm. Когда я печатаю., Среда всплывает список функций и свойств в объекте MainForm. Тем не менее, сегодня я считаю, такая функция внезапно исчезла. Поэтому мне интересно, как повторно включить такую ​​функцию снова.
alancc
1

голосов
0

ответ
127

Просмотры

AdMob не в нагрузке: 0 на Дельфи

Я использую Delphi 10.2 с AdMob. сервис Admob в списке Прав устанавливаются истина для отладки и выпуска конфигурации и FMX.Advertising под ИСПОЛЬЗУЕТ положение. Вчера я создал две рекламные блоки на AdMob (один баннер и один интерстициальный). Приложение связано с Firebase. Я добавил TBanneradd к моей форме и добавил следующий код: Процедура TFrm.FormShow (Sender: TObject); начать, если ad1.AdUnitID = «», то ad1.AdUnitID: = «ча-приложение-паб-3940256099942544/8691691433»; // GOOGLE TEST AD ID ad1.LoadAd; конец; Свойства: Adsize: авто Align: топ Когда я запустить приложение, я получаю следующее сообщение об ошибке: Ошибка «Объявление не удалось загрузить: 0» Я использую тест объявления идентификатор Google, потому что с моими собственными кодами я получаю ту же ошибку. Любая идея? Должен ли я добавить что-нибудь на androidmanifest вручную? если да, то где? Я' м следуя этой Embarcadero шаги (с помощью AdMob службы), но я не в состоянии загрузить любое объявление. Спасибо.
Bazi

Просмотр дополнительных вопросов