Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
Кольцо власти жгло руку... Если-бы не Илья в топике то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 20:04 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
ArbitDima T, Спасибо всем за понимание !!! А беспокоить вопросами буду только когда своих мозгов не хватит разобраться. Общение с умными людьми обогащает в прямом и переносном смысле :)) Пожалуйста! Вопросы задавай. Тут любят на вопросы отвечать, но не студентам. Профессиональный эгоизм: "я через это сам прошел и ты будь добр сам". И это правильно, иначе студент никогда не станет профи. Как уже написал: обозначай сразу что ты не профи и не студент. Так получишь понимание и полноценную помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 20:19 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
egorychArbitПокажите пожалуйста всего одну строчку кода.с выньапи одной строчкой не получится )) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. как то так, не компилировал, мог наврать Предлагаю в пятницу обсудить 255. Раньше, во время ДОС, этого хватало гарантированно. Сейчас MAX_PATH и то может не хватить - до 32800 растянули. Вроде и стек жалко (хотя там уже 1Мб), и потенциальный эксплойт создавать не хоцца. Что делать то правильно ? (Как сделали основатели в C#, не смотрел) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 22:30 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
SiemarglСейчас MAX_PATH и то может не хватить - до 32800 растянули. 260 как и много лет назад ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 22:33 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
CreateFile In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "\\?\" to the path. а тараканы из всех щелей лезут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2017, 22:39 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
ArbitMasterZiv, Вы сожалеете что оказывали мне действенную помощь?:) да нет, ровно наоборот. если человек - профессионал и спрашивает такое - это свидетельство профессиональной некомпетентности и провод для грусти. Если же это типа хобби, то все понятно и объяснимо. я потом ещё сделаю review твоего вопроса, по сути редкостный бред, я хочу объяснить, почему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2017, 00:00 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
[quot Arbit]Здравствуйте уважаемые Гуру! ну, давай устроим детальный разбор полетов... Собственно, sabj. А в С++ , в GetSaveFileName есть такая возможность? вообще, этот изначальный вопрос не стоит даже выеденного яйца. Там четко написано в документации, что вЫходной параметр - он также и Входной Там пишешь дефолт, и он работает. на выходе получаешь итоговый результат. И второй вопрос, в какой кодировке должно быть имя в переменной, чтобы оно правильно записалось на диск при условии что имена могут быть не только на латинице , но и в кирилице , а также на иврите ... Имя переменной в С++ может быть только в Latin1.. Имена будут браться из С# в DataGridViev и передаваться в DLL C++ как string . Приниматься будут в DLL как const wchar_t* тут какой-то полный бред, потому как string - это char, а не wchar_t, а wchar_t - это wstring ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2017, 00:45 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
MasterZiv, спасибо. Поскольку программирование - это для души, то я мыслю не как профессионал Это понятно. Вопрос про о наличии дефолта- я читал документацию. Я понимал что все должно быть. Но на практике я получал исключение. Когда egorych мне показал код, я увидел ту строчку которой мне не хватало. Надо было перегнать из const wchar_t перегнать просто в массив wchar_t* Что касается второго вопроса - тут я просто не совсем ясно выразился, но Изопропил понял меня Он мне много помогал уже. Я имел ввиду что в C# в прототипе переменная уходит как string , а принять в С++ ее ведь можно и как const char* и как const wchar_t* если я правильно понял. Во всяком случае в проекте я принимал и так и так в разных участках. У меня слабое звено для понимания - это вопрос кодировки в момент обмена данных между menaged/unmenaged кодом Я бы хотел попросить помочь один раз и навсегда понять схему эту. Поясню что я имею ввиду и как я делаю. а Вы поправьте меня пожалуйста В проекте я постоянно гоняю данные С#->C++->sQLite или MySQL и обратно. Я не использую для этого библиотеку базы под С# все делаю в С++ а готовый результат вывожу в C# Если я передаю строки в базу, (а строки идут на кирилице, латинице и иврите), то в шарпе я сначала пакую string в base64-строку , в С++ принимаю как const char*, перевожу в std::string распаковываю,кое-что шифрую и отдаю в базу. При этом с кодировкой ничего не делаю , так как все сделано в шарпе через Код: c# 1. 2. 3. 4. 5. и в базу нормально идет и иврит и кирилица. Если выборка из базы, то собираю XML строку пригодную для записи в DataTable и маршалингом передаю массив в шарп. В DataGridViev тоже все языки нормально ложаться. А вот когда реализовывал задачу загрузки в базу изображений и выгрузки их из базы на диск, обнаружил неодинаковое поведение. Выбирал файлы для загрузки диалоговым окном из шарповского класса передавал полный путь в stringt без паковки base64 , принимал как const wchar_t* и передавал в CreateFileW . И загружал благополучно файлы с именами на любом языке. Никаких манипуляций с кодировками не требовалось А вот когда начал сохранять на диск, то наткнулся на грабли: Имя файла для установки в дефолт шарповского диалогового окна я брал из грида А если я правильно понимаю, то кодировка в данном случае UTF16. После получения полного пути файла из шарповского окна (аналогично загрузке), принимаю в С++ как const wcar_t* - и получаю иероглифы на латинице и кирилице и исключение при иврите. Понял, что путь к файлу при загрузке и путь к файлу при сохранении в разных кодировках Пока вышел из положения так: беру имя файла из грида, без base64 отдаю в С++. Там принимаю в const char* перевожу в wchar_t* вот таким образом; bstr_t temp = _bstr_t(PathFiles.c_str()); wchar_t* FName = temp.operator wchar_t *(); и устанавливаю дефолтом в диалоговое окно С++ . При этом сохраняются имена только на латинице и кирилице. На иврите получается по дефолту ????.gpg и окно дальше не пропускает на сохранение Пробовал предварительно в шарпе паковать в base64 и принимать как const char* а затем использовать MultiByteToWideChar но не получилось Понимаю что в голове сумбур, и так никто не делает. Самому разобраться пока сложно. Разницу между юникодом и ASCII, однобайтовой и многобайтовой кодировкой понимаю, Но с правильным использованием соответствующих инструментов для этого у меня пока проблема Получилось слишком длинно. Извините Вопросы по другим темам пока в основном удается разобрать самостоятельно. Иногда обращаюсь на форум ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2017, 03:48 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
Arbitберу имя файла из грида, без base64 отдаю в С++. Там принимаю в const char* вот здесь и потеряли всё кроме "ANSI" Arbit bstr_t temp = _bstr_t(PathFiles.c_str()); из грида UNICODE тащить нужно. как я предполагаю - c# вызывает C-dll , а в параметрах маршаллинга задано преобразование в ANSI (явно или неявно) фрагмент кода давайте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2017, 09:32 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
Изопропил, добрый день! Я снимаю шляпу перед Вами. И могу сказать только одно: Медицина потеряла замечательного врача-диагноста!!! автор в параметрах маршаллинга задано преобразование в ANSI (явно или неявно) Это- объявление в С# при загрузке изображений Код: c# 1. 2. А это - при сохранении на диск Код: c# 1. 2. Я забыл ЯВНО указать кодировку Теперь буду знать, что по умолчанию всегда стоит ANSI. Спасибо огромное! Не случайно я выбрал Вас в качестве своего Наставника ! Вопрос закрыт. Вот это и есть наставничество: Конкретный вопрос -> диагностика ->конкретный ответ Как всегда - СУПЕР! Хороших выходных! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.06.2017, 13:52 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
Arbit У меня слабое звено для понимания - это вопрос кодировки в момент обмена данных между menaged/unmenaged кодом Я бы хотел попросить помочь один раз и навсегда понять схему эту. это вопрос скорее по C# ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2017, 16:39 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
MasterZivArbitУ меня слабое звено для понимания - это вопрос кодировки в момент обмена данных между menaged/unmenaged кодом Я бы хотел попросить помочь один раз и навсегда понять схему эту. это вопрос скорее по C# он смежный, а понимания внутренних механизмов здесь поболее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2017, 17:13 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
Ну будь здоров док. У нас тут конешно не Кащенко но тоже забавные топики бывают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2017, 21:02 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
Arbit, а есть какие-нибудь подобные форумы для врачей-психиатров? Я бы почитал Btw, Гуру - духовный наставник, а не технический :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 05:25 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
CEMb, приветствую Вас! "MSDN " для российских психиатров :)) Но там при регистрации на форуме в статусе специалиста нужно будет кроме прочей информации об образовании загрузить скан диплома. Можно и без диплома, но.... как пациент :)) А на практике, врачи обычно читают профессиональные зарубежные и отечественные монографии и ездят на тематические конференции. У нас другая специфика. Студенты и средний мед персонал в этом вопросе живут отдельной жизнью. Со студентами работают только в ВУЗe. Это минимум 7 лет обучения, а потом еще минимум 2 если узкая специализация Средний медперсонал дрючат в мед училище, а потом всю трудовую деятельность в лечебном учреждении Все ТОЛЬКО ОЧНО!!! :)) Я не знаю, наверное этот пост оффтоп. Не хочу попасть в бан, я очень дорожу помощью форумчан! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 20:16 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 20:24 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
ArbitЯ не знаю, наверное этот пост оффтоп. Не хочу попасть в бан, я очень дорожу помощью форумчан! Тут правила достаточно либеральные, если других не оскорблять забанят максимум топик за уход от темы. А если тема интересная и не раскрытая, то думаю модераторов можно уговорить не закрывать. А тема именно такая, т.к. ваше врачебное сообщество "вещь в себе", т.е. знает что делает, но никому не говорит, а когда делает толком ничего не поясняет. Лично мне было очень интересно узнать тонкости перед тем как меня будут резать, но все что я нагуглил это мнения пациентов с похожими болячками, потом хирург снимавший швы удивился: "где ты этой хрени начитался? Нормальные доктора в инет не пишут." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 21:01 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
Dima T, Может сначала спросить разрешение у модераторов, прежде чем забанят? :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2017, 23:34 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
Изопропил, добрый вечер! Опять я наступил на грабли в связке C#->C++->C#... Как обычно строка из базы SQLite идет в C# через DLL C++ Кодировка в базе UTF8 В DLL результат селекта преобразуется в XML -строку и отдается в С# как BSTR В C# принимается вот так Код: c# 1. 2. 3. Все работает как обычно и замечательно. НО Если строка в базе содержит управляющие символы \r\n, то они при выводе строки в MessageBox С# передаются просто как символы - перевода каретки не происходит. Еще заметил, что в С# если переменной присваивается строка вот так Код: c# 1. то каретка переводится, а если так Код: c# 1. то перевод каретки не работает Как я понимаю префикс @ означает что строка юникодная. Значит из DLL идет юникодная строка (BSTR) А MessageBox в такой строке не принимает управляющие символы Во что перегнать строку? Заранее благодарю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2017, 19:08 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
ArbitКак я понимаю префикс @ означает что строка юникодная. Значит из DLL идет юникодная строка (BSTR) Юникод тут ни при чем. Это наследие консольного Си. В C# @ означает читать как написано, т.е. \r это '\' и 'r', а не перейти в начало строки. Просто убери @ если надо перейти в начало строки. Это сделано для написания путей. Чтобы вместо убогого Код: plaintext 1. можно было написать по-нормальному Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2017, 19:54 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
Dima T, Спасибо. С @ - все понятно. Но у меня проблема со строкой, которую я получаю из базы. В базе она лежит как: "Запись не может быть удалена,\r\nтак как содержит сведения о визитах.\r\n" Я ее получаю в C# из DLL на С++ маршаллингом Как мне ее преобразовать, чтобы MessageBox понял "\r\n " как управляющие символы и перевел "каретку". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2017, 21:00 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
ArbitЯ ее получаю в C# из DLL на С++ маршаллингомНе надо путать передачу данных с маршаллингом. Это несколько разные сущности. Путать термины вообще не полезно. Профессиональный психиатр же не будет путать шизофрению с расщеплением личности? :) ArbitКак мне ее преобразовать, чтобы MessageBox понял "\r\n " как управляющие символы и перевел "каретку".C# и C++ это два очень разных языка, их тоже не нужно путать. Проблемы C# обсуждаются в соседнем форуме: http://www.sql.ru/forum/dotnet И гугл никто не отменял, первая же ссылка дает много информации: c# carriage return in message box ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2017, 23:59 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
White Owl, Спасибо за участие. авторПрофессиональный психиатр же не будет путать шизофрению с расщеплением личности? Вы правы, профессиональный - точно не будет :)) Вы наверное удивитесь, но в переводе с древнегреческого шизофрения и есть дословно - расщепление ума, Заболевание проявляющееся распадом личности Теперь по существу моего вопроса авторC# и C++ это два очень разных языка, их тоже не нужно путать Видимо Вы не совсем поняли мой вопрос, который находится на "стыке" этих двух языков Строка написаная в C# и в MessageBox отображаемая с переносом строки Код: c# 1. не идентична строке, Запись не может быть удалена,\r\nтак как содержит сведения о визитах.\r\n\ которую я получаю в переменную С# из базы через DLL на С++ В этой связи я и спрашиваю: Как преобразовать строку в DLL так, чтобы она, попав в С# правильно отобразилась в MessageBox. Еще раз - Строку для MessageBox я не готовлю в С#!!! и мне совершенно не понятно пока почему одна и та же строка, сделанная в C# и полученная из DLL ведет себя по разному в MessageBox? Может все-таки важно в какой кодировке передаются управляющие символы в данной строке? У меня мультиязычное приложение и локализация находится в базе. А сообщения в MessageBox - многострочные. Можно было бы, как вариант, разделить строку сообщения в базе с помощбю сепаратора и передать в C# и там рампарсить и склеить заново средствами C# Но может есть более рациональное правильное и красивое решение? А пользоваться гуглом я умею. Ваши ссылки тоже, к сожалению, не дают ответа, потому что находятся не в плоскости заданного вопроса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 01:46 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
Вопрос закрыт Оказалось что при передаче из unmenage в menager код, добавляется автоматом дополнительный слэш: и вместо строки "\r\n" в шарп идет "\\r\\n". Replace в C# решил вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 02:22 |
|
||
|
GetSaveFileName - как задать имя файла при открытии?
|
|||
|---|---|---|---|
|
#18+
White Owl, ArbitЯ ее получаю в C# из DLL на С++ маршаллингом White OwlНе надо путать передачу данных с маршаллингом. Это несколько разные сущности. Путать термины вообще не полезно. Профессиональный психиатр же не будет путать шизофрению с расщеплением личности? :) "Маршалинг (от англ. marshal — упорядочивать) в информатике — процесс преобразования информации (данных, двоичного представления объекта), хранящейся в оперативной памяти, в формат, пригодный для хранения или передачи. Процесс похож на сериализацию (отличия см. ниже). Обычно применяется тогда, когда информацию (данные, объекты) необходимо передавать между различными частями одной программы или от одной программы к другой." Вот этот самый маршаллинг я и использую при передаче данных из unmenaged в menaged код ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 02:34 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39472672&tid=2018145]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 154ms |

| 0 / 0 |
