7H3PRO Posted October 11, 2012 Report Posted October 11, 2012 Lucrez la un fel de program care are un textbox, un richtexbox si un buton, si care imita intr-un fel cmd-ul. Programului ii poti adauga comenzi sub forma de pluginuri pe care le scriptezi in vb.net sub forma de .dll si le adaugi intr-un asa numit folder plugins.^Asta e conceptul.Dar nu stiu cum sa aflu atributele comenzii, adica:am liniamultumesc anticipatAici comanda este "multumesc" si atributul "anticipat", cum pot sa aflu atributul indiferent ce comanda e, sau cat de lunga e, si cate alte atribute mai sunt si care, atata timp cat ele sunt mereu despartite una de alta prin spatiu. Quote
M2G Posted October 11, 2012 Report Posted October 11, 2012 (edited) Folosesti String.split pentru a separa stringul dupa spatii.Rezultatele le pastrazi intr-un array sau ce vrei tu stiind ca pe prima pozitie se afla comanda si pe urmatoarele, parametrii.Comenzile le poti stoca intr-un dictionary, avand ca si cheie numele comnezii si ca si valoare, un array. Acel array reprezinta paramerii. Cand introduci comanda poti face in asa fel incat sa se afiseze toate posibilitatile de parametrii, adica acel array si elementele din el luate in orice mod vrei tu. Edited October 11, 2012 by M2G Quote
7H3PRO Posted October 11, 2012 Author Report Posted October 11, 2012 (edited) Cum se poate sa afiseze toate posibilitatile? Un fel de meniu dropdown?editCum pot sa aflu daca exista de exemplu: Array(1) Edited October 11, 2012 by 7H3PRO Quote
M2G Posted October 11, 2012 Report Posted October 11, 2012 Le afisezi in consola cand apesi tab de exemplu. Daca ai comanda poti face get la valoarea acelei chei. Cum valoarea este un array, il parcurgi cu un foreach astfel ca nu conteaza cate elemente are, ti le va afisa pe toate. Merge si daca ai un element si daca ai 1000. Sau ca alternativa poti sa folosesti un for care merge pana la array.length, adica pana la numarul maxim de elmente din array. Nu ai nevoie sa stii cate sunt.Poti seta ca la fiecare apasare de tab sa iti mai arate un element din lista. Ca si la linux. Quote
7H3PRO Posted October 11, 2012 Author Report Posted October 11, 2012 Citeste inceputul topicului, eu nu am o consola, daca apas tab se selecteaza urmatorul element din fereastra.Si acum intrebarea mai importanta. Cum pot sa aflu daca exista de exemplu Array(1) sau Array(12462) ? Quote
M2G Posted October 11, 2012 Report Posted October 11, 2012 Ai zis ca imita intr-un fel cmd-ul, de asta am zis consola. Poti face ca atunci cand apesi tab sa nu mai treaca focusul pe urmatorul element. Sau mai simplu, pui o combinatie cum ar fi ctrl+tab si ai rezolvat problema.Ti-am raspuns ca nu ai nevoie sa vezi daca exista un anumit element in array. Daca citesti despre array.length si cum sa faci loopuri cu foreach o sa intelegi.Or sa se parcurga elementele de la primul pana la ultimul, nu conteaza cate sunt. Quote
7H3PRO Posted October 11, 2012 Author Report Posted October 11, 2012 Nu am nevoie sa parcurga nimeni nimic.Am de exemplu comanda download:donwload http://x.com/x.mp3 x.mp3Adica Array(0) va fi "download" iar daca Array(0) nu exista vreau sa imi zica ceva gen type help bla bla.Cum aflu daca exista sau nu? Quote
M2G Posted October 11, 2012 Report Posted October 11, 2012 Eu ti-am zis sa faci dictionary, nu array.Comanda o pui pe cheia dictionarului. In dictionar poti sa cauti chei cu eficeinta O(1).Dupa asta poti sa scrii ceva de genul:if (commandDictionary.ContainsKey("download")){Array params = (Array) commandDictionary["download"]; // acum ai in params toti parametrii pentru comanda download si poti face ce vor muschii tai cu ei.}else // in cazul in care comanda nu exista afiseaza un mesaj{Console.println("Command not found");} Quote