![]() |
Chirurgia endoscopică a hipofizei
"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală. Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale. www.neurohope.ro |
Vreau un sfat...
Last Updated: Sep 26 2009 19:12, Started by
mlhaltza
, Sep 05 2009 18:58
·
0

#1
Posted 05 September 2009 - 18:58

Hello tuturor!
Am următoarea dilemă, pe care sper să o pot rezolva cu ajutorul vostru, prin exemple directe, linkuri sau orice altceva: - se dă: un director cu aproximativ 200 fișiere word (doc si docx) în care doresc înlocuirea unui set de caractere cu altele (exemplu: *nume* cu numele adevarat al clientilor, etc.). Modificarea manuală este exclusă din start, iar folosirea de macro deasemenea; - se cere: vreau să fac o mică aplicație, care să înlocuiască anumite seturi de caractere (*nume*, *adresa*, etc.) cu date reale, pentru toate fișierele dintr-un foc, dar, nemodificând directorul cu pricina, acesta constituind un model, ci o copie a acestuia, copie creată tot din acest progrămel într-o altă locație aleasă de mine. Adică, mai exact, din imaginea de mai jos, în momentul în care apăs pe "Go!", (după ce completez toate câmpurile, evident) să mă întrebe unde vreau să salvez (copiez) respectivul director, și să facă înlocuirile propriu-zise. ![]() Vă mulțumesc anticipat și apreciez orice ajutor! ![]() |
#2
Posted 06 September 2009 - 17:33

Banuiesc ca vrei sa faci treaba asta in VB.Net; daca ai Office-ul instalat foloseste-te chiar de el adaugand o referinta la Word in proiectul tau.
Apoi te apuci frumos sa scrii o rutina pe care eu unul as vedea-o asa: Private Sub Replace(ByRef Source As String, ByRef Destination As String, ByRef Strings As Array) . . . End Sub Adica in Source pui calea spre directorul sursa unde se gasesc documentele, in Destination calea spre directorul destinatie unde vor fi salvate documentele editate iar Strings este o matrice bidimensionala cu perechi de siruri (de inlocuit,inlocuitor) pe care rutina va trebui sa le caute si sa le inlocuiasca in documente. Rutina va trebui sa enumere toate fisierele cu extensiile .doc si .docx din Source sa le deschida, editeze si sa le salveze in Destination. Nu este chiar asa greu, am incercat o varianta de proba si pe un set de 200 de documente cu 4 perechi de siruri de inlocuit a durat circa 1.5 minute toata operatia. Toata rutina contine in jur de 25 linii de cod. Daca reusesti sa o scrii restul e joaca. Nu am pus si codul sursa deoarece sunt curios la implementarea ta. |
#3
Posted 08 September 2009 - 18:54

Banuiesc ca vrei sa faci treaba asta in VB.Net; daca ai Office-ul instalat foloseste-te chiar de el adaugand o referinta la Word in proiectul tau. Apoi te apuci frumos sa scrii o rutina pe care eu unul as vedea-o asa: Private Sub Replace(ByRef Source As String, ByRef Destination As String, ByRef Strings As Array) . . . End Sub Adica in Source pui calea spre directorul sursa unde se gasesc documentele, in Destination calea spre directorul destinatie unde vor fi salvate documentele editate iar Strings este o matrice bidimensionala cu perechi de siruri (de inlocuit,inlocuitor) pe care rutina va trebui sa le caute si sa le inlocuiasca in documente. Rutina va trebui sa enumere toate fisierele cu extensiile .doc si .docx din Source sa le deschida, editeze si sa le salveze in Destination. Nu este chiar asa greu, am incercat o varianta de proba si pe un set de 200 de documente cu 4 perechi de siruri de inlocuit a durat circa 1.5 minute toata operatia. Toata rutina contine in jur de 25 linii de cod. Daca reusesti sa o scrii restul e joaca. Nu am pus si codul sursa deoarece sunt curios la implementarea ta. Thanks man! N-o fi greu, dar tot nu m-am descurcat...nu-mi iese nimic ![]() Mai astept totusi mici indicii. Mersi pentru interes! |
#4
Posted 10 September 2009 - 19:30

Deci adaugi o referinta la Word in proiectul tau: Project->Add Reference... selectezi tabul .Net si cauti Microsoft.Office.Interop.Word in acea lista.
Apoi in form inaintea oricarei declaratii adaugi urmatoarele linii de cod: Imports MSWord = Microsoft.Office.Interop.Word Imports System.IOAceste doua linii de cod nu erau neaparat necesare dar reprezinta o modalitate mai usoara de scris codul. Pe urma rutina: Private Sub Replace(ByRef Source As String, ByRef Destination As String, ByRef Strings As Array) Dim Word As New MSWord.Application Word.Visible = False Dim Doc As MSWord.Document Dim docArr As FileInfo() = New DirectoryInfo(Source).GetFiles("*.doc?") For Each fi As FileInfo In docArr Doc = Word.Documents.Open(fi.FullName) For i As Integer = 0 To UBound(Strings) Doc.Content.Find.Execute(FindText:=Strings(i, 0), ReplaceWith:=Strings(i, 1), Replace:=MSWord.WdReplace.wdReplaceAll) Next Doc.SaveAs(Destination & fi.Name) Doc.Close() Next Word.Quit() docArr = Nothing Doc = Nothing Word = Nothing End Subpe care o apelezi sub forma: Dim srep(,) As String = {{"*nume*", "Popescu"}, {"*adresa*", "Romania"}, {"*telefon*", "123456789"}, {"*mail*", "[email protected]"}} Replace("C:\DocSource\", "C:\DocDest\", srep) Evident inlocuiesti directoarele sursa si destinatie cu ce ai tu nevoie precum si perechile de siruri (de inlocuit,inlocuitor). Pentru selectarea directoarelor poti folosi un FolderBrowserDialog iar rutina o poti rula intr-un thread separat (cu ajutorul unui BackgroundWorker) pentru a nu ingheta fereastra principala in timpul rularii. Sper ca acest exemplu sa te lamureasca cat de cat. |
#5
Posted 13 September 2009 - 12:47

Deci adaugi o referinta la Word in proiectul tau: Project->Add Reference... selectezi tabul .Net si cauti Microsoft.Office.Interop.Word in acea lista. Apoi in form inaintea oricarei declaratii adaugi urmatoarele linii de cod: ................................................................................ ...................... Thanks man! Chiar m-a ajutat. Ce mi-a iesit pana acum: in functie de checkbox-ul selectat (pers fizica sau juridica), copiez directorul corespunzator (modelul cu toate fisierele word) in locatia aleasa printr-un FolderBrowserDialog, unde au loc modificarile, salvarile, etc. Mai am nevoie insa de inca 4 campuri (textbox sau ceva de genul asta) care sa reprezinte: - tipul studiilor; - denumire liceu, universitate, etc.; - anul inceperii studiilor; - anul terminarii studiilor ...dar acestea trebuie sa fie "dinamice", adica, la apasarea unui buton de exemplu sa apara iar aceste 4 campuri, ori de cate ori am nevoie, pentru situatiile in care un client poate sa aiba de la 1 set de astfel de date (liceu), pana la n seturi (liceu, facultate, masterat, etc.). As putea sa scriu "de mana" toate aceste date intr-o singura casuta text, dar in functie de numele universitatii/liceului, an incepere/terminare studii, trebuie sa inlocuiesc in fisierele cu pricina, automat, niste paragrafe prestabilite. Mai exact avand in vedere ca intr-un fisier doc am, continuand exemplul de mai sus caracterele *studii* in urma inlocuirii va rezulta: client 1 adresa 1 liceu1; numeliceu1; an incepere-an terminare paragraf corespunzator liceului/anilor, etc. sau client 2 adresa 2 liceu2; numeliceu2; an incepere-an terminare paragraf corespunzator liceului/anilor, etc. facultate2; numefacultate2; an incepere-an terminare paragraf corespunzator facultatii/anilor, etc. masterat2; numemasterat2; an incepere-an terminare paragraf corespunzator masteratului/anilor, etc. ......etc............................................................ Sper ca m-am facut cat de cat inteles, si astept cu nerabdare orice sfat. Va multumesc! |
#6
Posted 13 September 2009 - 16:45

Nu prea am inteles mare lucru... este vorba tot de inlocuire a unui text cu altul? sau inserarea unui text in document in functie de cerinte?
Oricum rutina de mai sus nu este limitata la fix patru seturi de siruri, se poate adauga oricate seturi este nevoie adica: Dim srep(,) As String = {{"*nume*", "Popescu"}, {"*adresa*", "Romania"}, {"*telefon*", "123456789"}, {"*mail*", "[email protected]"}, {"*studii*", "blabla"}} pentru ca: For i As Integer = 0 To UBound(Strings) in acest caz vor fi 5 perechi de siruri unde sirul "blabla" reprezinta un sir construit de tine pe baza informatiilor din cele 1 la n textbox-uri. |
#7
Posted 13 September 2009 - 20:32

Nu prea am inteles mare lucru... este vorba tot de inlocuire a unui text cu altul? sau inserarea unui text in document in functie de cerinte? ......................... In primul rand iti multumesc ca te implici! In al doilea rand, da, ai dreptate si m-am folosit la greu de aceste siruri; nu asta e problema. Am incarcat cele 3 screenshoturi pentru ca e mai usor (cred) sa ma fac inteles: ![]() ![]() ![]() Deci, in primul tab e totul ok si functioneaza asa cum ar trebui; in tabul 2 merge doar daca am o singura categorie de studiu. Ce vreau eu, e, ca la apasarea unui buton "Adauga studii", sa-mi mai introduca inca un tab, si inca unul....etc. cu aceleasi campuri astfel incat, la final, in documentul cu pricina, sa-mi inlocuiasca caracterele *studii* cu respectivele seturi de studii (unu, doua, noua sau cate or fi). Se exclude din start ideea sa pun pe aceeasi pagina (form) de mai multe ori aceleasi campuri (tip studii, nume institutie...) Nu stiu daca se poate ce vreau eu, si sper ca s-a mai inteles ceva. P.S. Ideea cu taburi e doar ca exemplu; daca se poate altfel, cu alte instrumente nu este nici o problema Mersi ! ![]() |
#8
Posted 14 September 2009 - 19:35

Am inteles... well nu este nici greu dar nici usor nu e. Adaugarea unui TabPage se face usor, de exemplu:
TabControl1.TabPages.Add("Studii" & (TabControl1.TabPages.Count-1).ToString) Apelata din evenimentul click al butonului care adauga studii iti va adauga cate un tab nou incepand cu "Studii1". Problema este adaugarea controalelor pe fiecare pagina astfel creata... in cazul tau este vorba de cinci textbox-uri si tot atatea label-uri. Eu vad doua variante: 1. Va trebui sa scrii de mana codul care adauga fiecare control, sa pastrezi o variabila obiect (globala) la fiecare textbox din fiecare pagina, eventual o matrice de controale, sa setezi individual proprietatile fiecarui textbox (marime, pozitie, culoare etc) deci destul de greu de manipulat. 2. Creezi un User Control pe care aranjezi cele cinci textbox-uri si etichete dupa cum vrei tu (Project>Add User Control...) pe care il vei adauga ca un nou TabPage de fiecare data cand ai nevoie. de exemplu sa zicem ca se cheama UserControl1: Private Sub AddNewTab() Dim tp As New TabPage("Studii" & (TabControl1.TabPages.Count - 1).ToString) 'tp.UseVisualStyleBackColor = True tp.Controls.Add(New UserControl1) TabControl1.TabPages.Add(tp) TabControl1.SelectTab(TabControl1.TabPages.Count - 1) End Subaceasta rutina va adauga la fiecare apel cate un TabPage nou cu toate controalele continute in UserControl1, deci fara prea multe batai de cap. Partea sexoasa in acest caz este accesarea proprietatilor fiecarui control (proprietatea Text a textbox-urilor) dar se poate si asta. Apoi colectezi toate sirurile din cele cinci textbox-uri de pe fiecare pagina de proprietati si construiesti cu ele un sir pe care il vei pasa ca text inlocuitor la "*studii*". Asta daca am inteles eu bine... |
#9
Posted 15 September 2009 - 14:54

Foarte tare partea cu "sexoasa"
![]() Multumesc pentru informatii; revin cu info. Esti tare ![]() ![]() |
#10
Posted 26 September 2009 - 16:19

Pe cât de optimist am fost, pe atât de repede m-am desumflat.
![]() Caut de o săptămână exemple, tutoriale, ceva, dar degeaba...ori găsesc frânturi de informații dar pentru vb4/5/6, ori nu găsesc nimic, și astfel, nu reușesc deloc să "leg" controalele din User Control cu Main Form-ul. Dacă aveți idee cum pot face asta, vă rog... ![]() Mulțam pentru tot! |
#11
Posted 26 September 2009 - 19:12

Sa inteleg ca nu poti sa culegi textul dintr-un textbox de pe acele usercontrols? aka sexoasa?
![]() Daca adaugarea unui nou TabPage se face dupa exemplul meu de mai sus atunci: -fiecare TabPage nou are un index (in cazul tau indexul 0 este tabul "General" iar celelalte taburi "Studii" incep de la 1) -un TabPage este un container pentru controale, cu alte cuvinte TabPage(x).Controls returneaza o colectie de controale -pe fiecare TabPage nou creat nu exista decat un singur control (usercontrol1), deci TabPage(x).Controls.Item(0) returneaza o referinta la UserControlul de pe tabul cu indexul x -fiecare usercontrol este un container pentru controalele continute (textbox-urile alea amarate), deci TabPage(x).Controls.Item(0).Controls returneaza o colectie de controale ei bine acum este partea tricky: -enumeram acea colectie de controale si in functie de numele fiecarui control putem sti daca acel control este un TextBox si actionam in consecinta -accesam controlul direct!! MsgBox(DirectCast(TabControl1.TabPages(x).Controls.Item(0), UserControl1).TextBox1.Text) unde x reprezinta indexul tabului ce contine usercontrolul cu textbox-ul de care avem nevoie (poti face o bucla For de la 1 la TabControl1.TabPages.Count - 1, citesti fiecare textbox si construiesti textul ala de care ai nevoie). |
|
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users