From dc45ae83422184c675b3a489875a2f38c6082994 Mon Sep 17 00:00:00 2001 From: gb <741021719@qq.com> Date: Sat, 6 May 2023 10:43:18 +0800 Subject: [PATCH] fix bug --- pc/code_twain/sln/hgjson/DlgOptJson.cpp | 46 +++++++++++++++---- pc/code_twain/sln/usb_tools/Debug/hgjson.exe | Bin 1699840 -> 1699840 bytes 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/pc/code_twain/sln/hgjson/DlgOptJson.cpp b/pc/code_twain/sln/hgjson/DlgOptJson.cpp index 76a603b..541b5ed 100644 --- a/pc/code_twain/sln/hgjson/DlgOptJson.cpp +++ b/pc/code_twain/sln/hgjson/DlgOptJson.cpp @@ -169,15 +169,15 @@ known_file_util::IJsonW* CDlgOptJson::SANEOPT::to_json(void) else if (type == L"string") { int len = def_val.length(); - jsn->set_value(L"cur", def_val.c_str()); - jsn->set_value(L"default", def_val.c_str()); + jsn->set_value(L"cur", (const wchar_t*)def_val.c_str()); + jsn->set_value(L"default", (const wchar_t*)def_val.c_str()); if (range.size()) { known_file_util::IJsonW* rng = known_file_util::create_jsonW(); rng->set_as_array(true); for (auto& v : range) { - *rng += v.c_str(); + *rng += (const wchar_t*)v.c_str(); if (len < v.length()) len = v.length(); } @@ -261,25 +261,30 @@ bool CDlgOptJson::SANEOPT::from_json(known_file_util::IJsonW* jsn) bool v = false; std::wstring sv(L""); - jsn->get_value(L"default", v); + if (!jsn->get_value(L"default", v)) + jsn->get_value(L"cur", v); sv = v ? L"true" : L"false"; def_val = std::string((char*)&sv[0], sv.length() * 2 + 2); } else if(type == L"int") { int v = false; - jsn->get_value(L"default", v); + if (!jsn->get_value(L"default", v)) + jsn->get_value(L"cur", v); def_val = std::string((char*)&v, sizeof(v)); } else if(type == L"float") { double v = false; - jsn->get_value(L"default", v); + if (!jsn->get_value(L"default", v)) + jsn->get_value(L"cur", v); def_val = std::string((char*)&v, sizeof(v)); } else if(type == L"string") { - jsn->get_value(L"default", &strv); + strv = NULL; + if (!jsn->get_value(L"default", &strv)) + jsn->get_value(L"cur", &strv); def_val = strv ? std::string((const char*)strv, lstrlenW(strv) * 2 + 2) : ""; } @@ -694,8 +699,31 @@ bool CDlgOptJson::load_from_json_text(const wchar_t* txt, std::wstring* err_msg) int pos = 0; known_file_util::IJsonW* jsn = known_file_util::create_jsonW(txt, &pos), * child = NULL; - if (!jsn) + while (!jsn) { + // try code-text ... + { + std::wstring code(txt); + size_t splash = code.find(L"\\\\"); + + while (splash != std::wstring::npos) + { + code.erase(splash++, 1); + splash = code.find(L"\\\\", splash); + } + + splash = code.find(L"\\\""); + while (splash != std::wstring::npos) + { + code.erase(splash++, 1); + splash = code.find(L"\\\"", splash); + } + splash = 0; + jsn = known_file_util::create_jsonW(&code[0], (int*)&splash); + if (jsn) + break; + } + int ep = 10, len = 10; if (lstrlenW(txt + pos) < 10) len = lstrlenW(txt + pos); @@ -1448,5 +1476,5 @@ void CDlgOptJson::OnBnClickedButtonExport() } int n = file_util::set_clipboard(cont.c_str(), cont.length() * 2, CF_UNICODETEXT); - MessageBox(TEXT("JSON text has set to clipboard already")); + MessageBox(TEXT("JSON text has set to clipboard already"), std::to_wstring(cont.length()).c_str()); } diff --git a/pc/code_twain/sln/usb_tools/Debug/hgjson.exe b/pc/code_twain/sln/usb_tools/Debug/hgjson.exe index 357169aea42d2b7f3227445e41e298376defdb93..82997196075bad8cf17187739af663cb728c018c 100644 GIT binary patch delta 5784 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