dragdrop files v CLR C++

Ladislav Vaiz spam na nagano.cz
Čtvrtek Září 22 20:09:36 CEST 2022


Když tak koukám na
 > Collections::Specialized::StringCollection ^ list = 
(Collections::Specialized::StringCollection 
^)e->Data->GetData(DataFormats::FileDrop,
tak i ta příroda se vám snaží naznačit, že je to špatná cesta :-)

V C# je univerzální foreach, tady by to mohlo být:

auto lst = e->Data->GetData(DataFormats::FileDrop, false);

for each(String ^ s in lst){

     Debug.Print("{0}\n", s);

}

L.

P.S. Snažím se teď v už dříve zmiňovaném projektu používat "pokročilé" 
vlastnosti, co znám z C# používat v C++. Konkrétně procházení a řazení 
kolekcí, lambda funkce. V C++ je to šílenost. I ve "starém" C# to 
všechno funguje jednoduše a logicky, o LINQ v aktuálních verzích ani 
nemluvě. Bohužel dělat pod ESP32 v C# asi bude stejně okrajový případ 
jako vaše C++ CLR.


On 22.09.2022 17:54, Pavel Hudeček wrote:
> Tak z tohodle jsem nic rozumného nevyzískal.
>
> Ale už předtím mi selhala snaha dostat to do
> 1. List<String^>^ - ani nešla deklarovat proměnná takového typu
> 2. std::vector<std::string> o kterých se tam zmiňují
>
> jediné co jse, je
> auto lst = e->Data->GetData(DataFormats::FileDrop, false);
> (je jedno zda fale/true)
>
> lst->GetType() vyplivne samořejmě zase System.String[]
>
> ale nemá žádný ->Items, nebo něco takovýho, přes co bych z něj dostal 
> ty stringy
>
> PH
>
> Dne 22.09.2022 v 16:49 Nesvacil Jiri napsal(a):
>> https://stackoverflow.com/questions/32786187/passing-an-array-of-strings-from-c-to-c-sharp 
>>
>>
>> Dne 22.09.2022 v 16:43 Pavel Hudeček napsal(a):
>>> Trochu jsem s tím pohnul:
>>> Collections::Specialized::StringCollection ^ list = 
>>> (Collections::Specialized::StringCollection 
>>> ^)e->Data->GetData(DataFormats::FileDrop, true);
>>> for (int n=0; n<list->Count; n++) listBox1->Items->Add(list[n]);
>>> To jde aspoň přeložit:-)
>>> Ale stejně to skončí na chybě, že System.String[] nelze přetypovat 
>>> na System.Collections.Specialized.StringCollection.
>>> Takže je ten výstup jinej než z Clipboard.GetFileDropList
>>>
>>> Pořád tedy to samé: Jak v c++ udělat System.String[]?
>>>
>>> PH
>>>
>>>
>>> Dne 22.09.2022 v 16:25 Pavel Hudeček napsal(a):
>>>> No to přepínátko funguje jen částečně, asi podle toho, které části 
>>>> mají udělané a když stránka neobsahuje alternativní jazyk, tak ho 
>>>> nezobrazí vůbec. Např. u toho clipboardu se tím do c++ přepne 
>>>> definice, ale example už ne. Ten jde přepnout třeba do vb.
>>>>
>>>> PH
>>>>
>>>> Dne 22.09.2022 v 16:04 Ladislav Vaiz napsal(a):
>>>>> Asi nechcete slyšet knížecí radu, ale já bych přešel na C# :-(
>>>>> V MSDN se někdy dají jazyky přepnout, např. v 
>>>>> https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.clipboard.getdata?view=netframework-4.0
>>>>> je přepínátko nad nadpisem vpravo.
>>>>> L.
>>>>>
>>>>> On 22.09.2022 15:55, Pavel Hudeček wrote:
>>>>>> Dobrý den všem,
>>>>>>
>>>>>> tady
>>>>>> Provide file drag and drop functionality - Visual C++ | Microsoft 
>>>>>> Learn 
>>>>>> <https://learn.microsoft.com/en-us/troubleshoot/developer/visualstudio/cpp/language-compilers/provide-file-drag-drop-functionality>
>>>>>> je popis jak udělat, aby se v listboxu zobrazil seznam na něj 
>>>>>> hozeých souborů.
>>>>>> To funguje.
>>>>>>
>>>>>> Jak totéž udělat v C++ CLR?
>>>>>>
>>>>>> První část s DragEnter funguje:
>>>>>> private: System::Void listBox1_DragEnter(System::Object^ sender, 
>>>>>> System::Windows::Forms::DragEventArgs^  e) {
>>>>>>             if (e->Data->GetDataPresent(DataFormats::FileDrop))
>>>>>>                 e->Effect = DragDropEffects::All;
>>>>>>             else
>>>>>>                 e->Effect = DragDropEffects::None;
>>>>>>         }
>>>>>>
>>>>>> Ale všechny pokusy o DragDrop selhaly na tom, že nem;žu najít C 
>>>>>> ekvivalent pro
>>>>>> string[] s = (string[]) e.Data.GetData(DataFormats.FileDrop, false);
>>>>>> Nějaké nápady?
>>>>>>
>>>>>> Díky,
>>>>>> PH
>>>>>
>>>>> _______________________________________________
>>>>> HW-list mailing list  -  sponsored by www.HW.cz
>>>>> Hw-list na list.hw.cz
>>>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>>
>>>> _______________________________________________
>>>> HW-list mailing list  -  sponsored by www.HW.cz
>>>> Hw-list na list.hw.cz
>>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list





Další informace o konferenci Hw-list