Chandler | vrijdag 15 april 2005 @ 15:42 | |||||
Dag mensen, Ik dacht omdat ik iets niet snap maar weer voor ieder probleem een klein topic te openen lijkt me niet echt heel handig, dus open ik ook voor visualbasic maar een dummies topic. want mijn vraag is nogal dummy ![]() Reeds ben ik bezig met een kleine tool waarmee ik bv _-_ kan omzetten naar [spatie]-[spatie] in bestandsnamen en directories.. nu kan ik dit reeds wel in 1 directory maar het is de bedoeling dat het ook gaat werken in een 'tree'. Oftewel een boomstructuur kan doorzoeken naar dit soort bestanden en deze dan gaat 'renamen'. Nu was ik vandaag opzoek naar een werkende source die een directorie stuctuur kan doorzoeken maar helaas heb ik geen goede gevonden, tenministe niet een waar vele modules aan vast zitten en ik weet dat er meerdere te vinden zijn maar op een of andere manier kon google en gathering me niets vertellen over het geen dat ik zoek.. Fok wilde mij uiteraard weer niet helpen omdat de search engine uit staat.. Dussuh vraag ik het maar aan de gebruikers. Hopend op een werkende en goede oplossing. ik draai VB6 zonder extra's ![]() | ||||||
QuietGuy | vrijdag 15 april 2005 @ 15:49 | |||||
Dus je wilt recursief mappen inlezen eigenlijk? De rest kan je dan waarschijnlijk zelf wel. | ||||||
sop | vrijdag 15 april 2005 @ 16:11 | |||||
Dat is ontzettend simpel Chandler. Gebruik het File System Object. Een uitgewerkt voorbeeldje vind je hier: http://juicystudio.com/tutorial/vb/files.asp#rec Wel ff dit doen in je VB projectje. De scripting runtime staat standaard op een systeem: quote: | ||||||
hbruyn | vrijdag 15 april 2005 @ 16:20 | |||||
Gewoon in de for each loop waar je de directories doorloopt de functie opnieuw aanroepen, en de huidige directorie meegeven als (optie). | ||||||
Chandler | vrijdag 15 april 2005 @ 19:04 | |||||
Dankjewel mensen (vooral SOP!) ik heb met die site en dergelijke voorbeelden een goed lopend zoek systeem weten te maken maar nu zit ik met iets anders (heb helaas niet continue internet anders zou ik het misschien zelf gevonden hebben). Hoe kan ik een text met enters aan een textbox toevoegen (vbCrLf werkt niet en chr(13) & chr(10) werken helaas niet). Iemand een idee/ | ||||||
sop | vrijdag 15 april 2005 @ 19:24 | |||||
textbox op multiline zetten | ||||||
Chandler | vrijdag 15 april 2005 @ 19:25 | |||||
Wederom vriendelijk bedankt, ik ga weer verder spielen! ![]() | ||||||
sop | vrijdag 15 april 2005 @ 19:34 | |||||
't is meer Visual Basic voor Chandler door Sop ![]() | ||||||
QuietGuy | vrijdag 15 april 2005 @ 19:38 | |||||
quote:Zal ik het topic veranderen? ![]() | ||||||
Chandler | vrijdag 15 april 2005 @ 20:50 | |||||
Whahaha, nee doe maar niet, dan kunnen meerdere mensen hier nog gebruik van maken. * Chandler gaat nu ff opzoek naar een routine voor het 'veranderen' van strings (find and replace) | ||||||
Chandler | vrijdag 15 april 2005 @ 23:17 | |||||
ps weet iemand waar ik documentatie kan downloaden voor vb6 (niet .NET dus).. want kan zelf op msdn.com niets vinden en heb helaas geen cd van de library zelf tot mijn beschikking.. | ||||||
The_Terminator | vrijdag 15 april 2005 @ 23:27 | |||||
Maak een form genaamd 'form1', voeg vervolgens een listbox genaamd 'list1' toe. Maak daarna een module aan en voeg de volgende code toe:
Voeg nu toe in 'Form_Load':
Waar de 'files' parameter het pad is wat je wil doorzoeken. | ||||||
QuietGuy | zondag 17 april 2005 @ 14:04 | |||||
Dan nu even een vraagje van mij ![]() Ik ben bezig met een statistiekenscript voor Windows-webservers. Ik weet dat er al een aantal zijn maar ik wil er zelf ook een maken. Ik ben al een heel eind, VB genereert een include file welke te gebruiken is in PHP of ASP, wat je maar wilt. Daarop kan je een aardige output baseren, zoals bijvoorbeeld http://quietguy.is-a-geek.org/qgstats/ Nu wil ik ook de temperatuur van de hardware hier bij plaatsen. Eenander statistiekenscript wat ik voorheen gebruikte, gebruikte hiervoor Motherboard Monitor. Ik wil dus niet afhankelijk zijn van steeds losse programmaatjes en wil dit dus ook in mijn Visual Basic-programma krijgen. Nu zou dit opvraagbaar moeten zijn door middel van de WMI-set Win32_TemperatureProbe maar ik krijg daar geen output van terug. Van andere WMI-sets krijg ik wel mooi alle gegevens die ik wil. Kan iemand mij een klein voorbeeldje geven van het opvragen van temperaturen, met of zonder WMI? | ||||||
The_Terminator | zondag 17 april 2005 @ 14:22 | |||||
quote:Zoiets als dit: http://vbnet.mvps.org/index.html?code/wmi/wmitemperatureprobe.htm | ||||||
QuietGuy | zondag 17 april 2005 @ 15:14 | |||||
quote:Ik krijg er geen output van, maar MotherBoard Monitor geeft wél output (Src: tempprobe.zip) | ||||||
The_Terminator | zondag 17 april 2005 @ 17:01 | |||||
quote:Ik ook niet, heb een Asus A7N8X moederbord. Heb nog een andere pc met een Abit moederbord, deze geeft de temperaturen wel door. Is dus per systeem anders, denk dat het veroorzaakt wordt doordat de 'Win32_TemperatureProbe' call niet op alle moederborden werkt... | ||||||
QuietGuy | zondag 17 april 2005 @ 17:33 | |||||
quote:Bij mij is het dus ook een asus moederkoekje... balen... Andere oplossing zonder WMI anyone? ![]() | ||||||
QuietGuy | zondag 17 april 2005 @ 17:47 | |||||
Hmm. op http://www.ionus.at/content/projects/mbmvb6/ staat een source, maar dan moet je MBM installeren, da's juist wat ik wil overslaan ![]() | ||||||
Chandler | maandag 6 juni 2005 @ 12:33 | |||||
Nu weer een leuke vraag(en) ![]() 1. hoe kan ik met een vb aplic meerdere trayicons benutten. 2. hoe kan ik bv een procentage aangeven (vb 1t/m 100).. in de icon zonder 100 icons te hoeven maken! ![]() | ||||||
QuietGuy | maandag 6 juni 2005 @ 12:35 | |||||
1. er is een control die je meerdere malen in VB kan plaatsen. Dus kan. 2. Je kan geloof ik pset() gebruiken op de tray. Dan ga je dus plaatjes uittekenen. | ||||||
Chandler | maandag 6 juni 2005 @ 14:40 | |||||
hmm, je maakt het me niet gemakkelijk zie ik al wel weer, mja ik ga er wel even mee spelen!. | ||||||
QuietGuy | maandag 6 juni 2005 @ 15:02 | |||||
quote:Het hoeft ook niet makkelijk te zijn, zo leer je weer wat ![]() | ||||||
sop | maandag 6 juni 2005 @ 15:27 | |||||
Chandler: Bedank QG eens voor zijn mooie Network Traffic module! | ||||||
QuietGuy | maandag 6 juni 2005 @ 15:29 | |||||
quote:ah, hij verspreid zich al ![]() | ||||||
sop | maandag 6 juni 2005 @ 15:52 | |||||
quote:Kenmerk van opensource: andermans code verspreid je makkelijk. | ||||||
Chandler | maandag 6 juni 2005 @ 18:56 | |||||
![]() ![]() QG BEDANKT!!! ![]() | ||||||
Chandler | dinsdag 7 juni 2005 @ 09:28 | |||||
Next questions. Van Sop heb ik een stukje code, echer zit daar een timer1_timer in (oftewel timer) deze draait niet als ik het programmatje heb geminimaliseerd of naar de tray heb geschopt, hoe krijg ik dat wel voor elkaar? Tweede is hoe krijg ik een textje op een plaatje? (picturebox?) | ||||||
Chandler | woensdag 4 januari 2006 @ 17:36 | |||||
Een andere vraag!. Ik heb 2 forms.. ![]() en ![]() nu zie je dat op het eerste plaatje 2x brouwse staat... nu wil ik dus het 2e form een directory laten selecteren (dat lukt al) maar deze terug geven aan text 1 of text 2. Echter heb ik geen flauw idee hoe ik kan kijken welke button ik heb aangeklikt om data te plaatsen op de juiste plaats!? Iemand een idee? | ||||||
sop | woensdag 4 januari 2006 @ 17:44 | |||||
Dat browseschermpje kun je beter niet zelf bouwen. Dat is namelijk een standaard component van windows. Je kunt daar beter de CommonDialogs voor gebruiken. VBAccelerator heeft daar wel het een en ander over geschreven en ook Google biedt uitkomst. Hier een link naar een artikel op vbaccelerator. Een extra DLL is overigens niet nodig om van commondialogs gebruik te maken (o.a. een folderbrowser). | ||||||
Chandler | woensdag 4 januari 2006 @ 17:51 | |||||
maar ok, als ik dat gebruik moet ik ook nog de data op de juiste plaats zien te krijgen, en dat lukt nu helaas nog niet ![]() Wat ik al heb (http://upload.bruggema.nl/index.php?i=v&ip=1372487152&name=backup directories.zip) [ Bericht 19% gewijzigd door Chandler op 04-01-2006 17:57:27 ] | ||||||
The_Terminator | woensdag 4 januari 2006 @ 18:03 | |||||
quote:Is niet zo moeilijk. Ik pas je source even aan en plaats de link hier zometeen wel. | ||||||
Chandler | woensdag 4 januari 2006 @ 18:05 | |||||
als je wil, zet er dan ff comments bij... dan kan ik er van leren ![]() | ||||||
The_Terminator | woensdag 4 januari 2006 @ 18:11 | |||||
quote:Ik heb alleen het volgende aangepast:
Dus gewoon kijken wat voor waarde de variable 'view' heeft en dan de juiste textbox op de form 'lister' aanpassen. Ik heb ook een functie ingebouwd die checkt of er een '\' achter het pad staat. | ||||||
Chandler | woensdag 4 januari 2006 @ 18:15 | |||||
omg natuurlijk, ik ben helemaal vergeten om ook de form aan te geven... dat is natuurlijk erg belangrijk!!! tnx man!... dit helpt me al weer een heel stuk verder!!! tnx!. | ||||||
Gajus | vrijdag 17 februari 2006 @ 22:15 | |||||
Vraagje over VB-tags bij tekstopmaak: Achter een gewoon tekstblok is het mogelijke een extra tekstblok toe te voegen; dit extra tekstblok wordt pas zichtbaar als de muiscursor op de gewone tekstblok geplaatst wordt. De syntax lijkt op [spoiler=GewoneTekst]ExtraTekst[/spoiler] ... maar is niet correct. Wat is dan wel de goede syntax? | ||||||
mschol | vrijdag 17 februari 2006 @ 23:25 | |||||
intresting.. ![]() | ||||||
SuperRembo | zaterdag 18 februari 2006 @ 10:37 | |||||
quote:Waar heb je het over? ![]() | ||||||
Chandler | zaterdag 18 februari 2006 @ 10:40 | |||||
Misschien is een wat duidelijker uitleg handig in deze zaak? ![]() ![]() | ||||||
Gajus | zaterdag 18 februari 2006 @ 16:13 | |||||
quote:Binnen een tekst kun jij tags plaatsen zoals (b) en (/b), maar dan met hoekige haken. Zo bestaan er ook tags om extra tekst toe te voegen aan een normale tekst. Ik weet dat die tags bestaan en toepasbaar zijn binnen het Forum aangezien ik zij ooit heb gebruikt (maar dat was in de Preview-mode, dus kan ik het niet terugvinden). Voordat ik mijn vraag hier stelde, heb ik uitgebreid gegoogled. Daarbij ben ik de termen tegengekomen zoals SML-code (SML= Simple Markup Language), BB-code (BB=?) en ook VB-code (VB= VisualBasic). Ik ben van de ArpaNet-generatie en recentere ontwikkelingen zoals VisualBasic zijn aan mij voorbij gegaan. Jouw vraag of dit een VisualBasic aangelegenheid betreft, kan ik dan ook niet bevestigen of ontkennen. ![]() | ||||||
Aaargh! | zaterdag 18 februari 2006 @ 16:48 | |||||
quote:Jij doelt op vB-code (vBulletin, een webforum pakket) quote:VisualBasic is een soort van RAD tool met een BASIC achtige syntax, voornamelijk gebruikt door (zoals het topic al aangeeft) dummies. ![]() ![]() | ||||||
Gajus | maandag 20 februari 2006 @ 00:28 | |||||
quote:Mijn dank voor het oplossen van dit misverstand. ![]() Ik zal mijn vraag in een ander subforum stellen. Off topic: ![]() Ca. 25 jaar geleden heb ik noodgedwongen BASIC gebruikt. Ik heb het altijd als een (inmiddels gepasseerde) kinderziekte van de PC beschouwd. Hilarisch te vernemen dat Visual Basic een doorontwikkeling van BASIC is. | ||||||
DiRadical | maandag 20 februari 2006 @ 11:50 | |||||
quote:Ai, dit maakt het wel heel erg complex, zelfs voor zo'n simpel toolje. Het is niet verstandig om het aangeroepen scherm zo afhankelijk te maken van het aanroepende scherm. (Wat ga je doen als je een derde knop met dezelfde functionaliteit wil, op hetzelfde of een ander scherm) Ik zou een public property toevoegen aan het brouwser scherm. Deze kan dan vanaf het aanroepende scherm worden uitgelezen. Dat maakt het onafhankelijk van het aantal knoppen op het scherm en zelfs van deze applicatie Je kunt het dan ook gebruiken in een ander project of op andere scherm binnen je huidige project Het brouwser scherm ziet er dan zo uit.
Voor het scherm Lister
Zoals je ziet heb je de variabele view niet nodig. Je weet namelijk op welke knop je drukt (de knop waarvan het event afgaat) Wellicht kost het iets meer tijd om dit initieel te maken, maar een nieuwe knop toevoegen kost dan weer veeeel minder tijd. ![]() | ||||||
DaFan | maandag 20 februari 2006 @ 12:29 | |||||
Ik ook een VB vraag! Het gaat over de Timer, ik wil m meerdere malen naast elkaar laten lopen (4x) om iets af te tellen op een knop tot het moment dat die knop weer vrijgegeven wordt. ik gebruik nu de volgende Do While Loop:
De button wordt disabled, de titel telt af in secondes. De pausetijd (PauseCrime) wordt minimaal veranderd vanwege andere stukjes code in de Form maar das hier niet van toepassing. De boolean wordt weer False om andere dingen te kunnen checken en er wordt een checkCode opgeroepen om te kijken of de andere timer loopt. Maar omdat ik een vrij snelle computer heb gaat ie echt 100 loops per seconde doen ongeveer waardoor je dus de knop ziet flitsen en gaan als een idioot, wat erg irritant is. Wat wil ik Ik wil dus eigenlijk een Do While Loop die echt maar 1x per seconde loopt...enig idee? (En ondertussen ook nog in andere Do While Loops kan hangen omdat er dus nog 3 soortgelijke knoppen zijn). | ||||||
Aaargh! | maandag 20 februari 2006 @ 12:41 | |||||
quote:Wat jij doet heet een busy-wait, en dat mag je NOOIT doen op een multitasking OS. Je programma gaat dan CPU tijd gebruiken terwijl ie het niet nodig heeft, normaliter doe je dit door een thread te starten voor de teller en steeds je thread een seconde stil te zetten (je vraagt dan feitelijk aan de scheduler om je thread een seconde lang niet te laten runnen). Maar volgens mij heeft VB geen support voor multithreading Wat je in VB waarschijnlijk kan doen is een timer maken die na 1 seconde een event genereerd (dat kan neem ik aan?) . | ||||||
DaFan | maandag 20 februari 2006 @ 13:05 | |||||
quote:Het probleem van de Timer() is dat ie telt in seconden vanaf middernacht ![]() Maar een aparte event oproepen na een seconde is ook wel een manier die eventueel te coden is...ik ga wat proberen vandeweek. (Ben ziek dus beetje concentreren op een lap code lukt me niet) | ||||||
Aaargh! | maandag 20 februari 2006 @ 13:43 | |||||
quote:Ik heb in een grijs verleden nog wel eens met VB geprutst (nog steeds nachtmerries van). Maar volgens mij had je toen gewoon een Timer dingetje wat je b.v. op 1 seconde kon zetten en dan ging er gewoon elke seconde een event af. | ||||||
DaFan | maandag 20 februari 2006 @ 14:38 | |||||
quote:Ik ben het nog niet tegen gekomen. Als er anderen zijn die dit topic lezen en het wel weten...graag ![]() Alvast bedankt iig voor je hulp ![]() | ||||||
DiRadical | maandag 20 februari 2006 @ 15:21 | |||||
quote:Dat klopt. Je kunt de timer.inteval op 1000 zetten (tijd in milli seconden) en dan gaat het event elke seconde af totdat de timer disabled wordt In het timer event kun je de timer disabelen.
| ||||||
DaFan | maandag 20 februari 2006 @ 16:10 | |||||
DiRadical: Die code van jou gaat om de 1 sec in de If functie? En dat 5x? | ||||||
The_Terminator | maandag 20 februari 2006 @ 16:30 | |||||
quote:Is het niet beter om een API timer te gebruiken? Deze code moet dan in een module:
Dit mag in een module staan, maar ook in een form:
Deze code moet in de form staan:
Om de timer te starten gebruik je: StartTimer1 Om de timer te stoppen gebruik je: StopTimer1 Owja, niet op de stop knop van VB drukken voordat je een API timer gestopt hebt, anders crasht VB ![]() | ||||||
DiRadical | maandag 20 februari 2006 @ 16:59 | |||||
quote:Ja, Iedere seconde wordt het timer1_timer event afgevuurd. Dat komt omdat de interval op 1000 staat in het control. Na 5 seconden wordt de timer disabled Dit kun je natuurlijk ook doen als je het form afsluit (het form_unload of Form_QueryUnload event) Dan worden de functies die je in het timer event aanroept iedere seconde uitgevoerd, totdat je het scherm afsluit. | ||||||
DiRadical | maandag 20 februari 2006 @ 17:06 | |||||
quote:Het kan. Maar ik vraag me altijd af of API "beter" is als het niet nodig is ![]() Ik gebruik het liefst geen API in VB6, tenzij het niet anders kan. | ||||||
DaFan | maandag 20 februari 2006 @ 18:06 | |||||
Heel erg bedankt DiRadical ![]() Ik heb nu 2 knoppen die prima werken, straks een derde eraan toevoegen ![]() Code van de timer is nu zo:
In de clickevents wordt de boolean True en worden ze disabled en de tijd wordt vastgesteld. Bedankt ![]() | ||||||
woutabest | dinsdag 21 februari 2006 @ 20:52 | |||||
Ik weet vanaf het begin al dat ik meerdere forms in één project kan stoppen. Dan moet het dus ook mogelijk zijn om tussen die twee te switchen. Hoe doe ik dat? Ik draai hier VB.net 2003 | ||||||
DaFan | dinsdag 21 februari 2006 @ 20:58 | |||||
quote:Met een knop ofzo?
Eventueel kan je nog kiezen om:
erbij te doen, maar op deze manier zou het moeten lukken. | ||||||
woutabest | dinsdag 21 februari 2006 @ 21:07 | |||||
Helaas, niets pakt hij. Wel deed hij me.Hide maar die staat voor de form zelf... Geeft overal blauwe kringeltjes en ook bij debuggen loopt hij vast... | ||||||
SuperRembo | dinsdag 21 februari 2006 @ 21:31 | |||||
Je moet natuurlijk wel een referentie naar het form hebben dat je wil tonen of verbergen. | ||||||
woutabest | dinsdag 21 februari 2006 @ 21:34 | |||||
ja, zover ben ik nog niet ![]() | ||||||
DaFan | dinsdag 21 februari 2006 @ 21:55 | |||||
quote:<formnaam>.Show zou gewoon moeten werken ![]() | ||||||
woutabest | dinsdag 21 februari 2006 @ 21:58 | |||||
quote:Dan krijg ik de volgende melding:
| ||||||
DaFan | dinsdag 21 februari 2006 @ 22:06 | |||||
quote:Staan ze wel in dezelfde application? Want hij vraagt nu om een Object terwijl bij 2 Forms in dezelfde Application dat niet nodig is (omdat het object hetzelfde is). Anders zou je dus <objectnaam> . <formnaam> . Show kunnen gebruiken. Anders weet ik het ook niet, al denk ik wel dat de help er iets over te zeggen heeft. | ||||||
woutabest | dinsdag 21 februari 2006 @ 22:33 | |||||
Misschien kan ik beter mezelf even de help in gaan duiken, als ik die meegeïnstalleerd heb ![]() ![]() | ||||||
DiRadical | woensdag 22 februari 2006 @ 12:02 | |||||
quote:Niet in .NET Er is, gelukkig, geen default instantie van het object (form) meer aanwezig in .NET Je moet eerst het scherm definiëren en instantieren. Dus:
Dim as new is niet handig in VB6, omdat je het dan niet meer naar nothing kunt zetten. Er wordt een nieuwe instantie aangemakt als je er naar refereert, dus ook als je het naar nothing zet. In .Net maakt dat niet meer uit. | ||||||
DaFan | woensdag 22 februari 2006 @ 12:03 | |||||
Oh is .Net zo anders dan....sorry dan ![]() | ||||||
woutabest | woensdag 22 februari 2006 @ 12:07 | |||||
het werkt! ![]() dankje! ![]() Ook DeFan natuurlijk bedankt, je deed je best ![]() [ Bericht 30% gewijzigd door woutabest op 22-02-2006 12:13:04 ] | ||||||
DiRadical | woensdag 22 februari 2006 @ 13:01 | |||||
quote:Als je meerdere schermen wilt, kun je natuurlijk ook een MDI applicatie maken. Met een menu e.d. Maar dat is afhankelijk van het type applicatie dat je wilt maken. | ||||||
woutabest | woensdag 22 februari 2006 @ 13:30 | |||||
Toch leuk, al die termen die ik niet snap. ![]() Ik probeer een klokje te maken. Als ik op een knop in MainMenu1 druk, komt form2 tevoorschijn waarin ik alles kan invoeren. Nu moet ik nog even iets vinden waarbij ik de data over kan brengen. Zelf zit ik te denken aan om het op te slaan in een .txt bestand, en dat ik mijn programma dan 'refresh'. Opslaan wil ik toch wel, dus dat wordt niet veel meer werk. ![]() | ||||||
DiRadical | woensdag 22 februari 2006 @ 14:31 | |||||
quote:MDI is Multiple Document Interface waarbij je een scherm hebt waarin de andere scherm geopend worden Een duidelijk, maar lelijk voorbeeld ![]() Er zijn 1000 en 1 manieren op gegevens van het ene in het andere scherm te krijgen en opslaan in een text bestand is er 1 van. Waarschijnlijk wel 1 van de traagste. ![]() Wat bedoel je met 'een klokje' ? Er wat vult je in op scherm 2 Een quick en dirty methode is om de textboxen op scherm 2 "public" te maken. Start het scherm op via frm.showdialog In scherm 2 Hide je het scherm als je daar op de knop drukt. In scherm 1 kun je dan de ingevoerde waarden uitlezen en verwerken. [ Bericht 13% gewijzigd door DiRadical op 22-02-2006 14:49:42 ] | ||||||
woutabest | woensdag 22 februari 2006 @ 15:11 | |||||
Een simpel progje dat aftelt naar een bepaalde datum en tijd en als het zover is een melding geeft. Zegmaar een 'kom van de computer af' of een 'je hebt een afspraak'. Zal wel niet erg moeilijk zijn ![]() | ||||||
DiRadical | donderdag 23 februari 2006 @ 14:39 | |||||
quote:Dit zit toch al in MS Outlook ? KISS (Keep it simple stupid), dus blijf van de Windows Services en de tray icons af ![]() Je kunt daar heel lang mee bezig zijn: Success ermee. ![]() Ik moet zelf weer eens aan de slag gaan met mijn Bieb programmaatje voor al mijn boeken, CDs (muziek tot op track niveau of losse MP3), DVDs (avi en film) en video banden. Referenties naar de artiesten (schrijver, muzikant, acteur, regisseur) en hun rol. IMDB en FreeDB integratie. Meerdere soorten GUI's op dezelfde business logic enz., enz. Veel te groot dus en ik ben al een paar keer begonnen en gestopt met een soort datamodel. Maar nog steeds niet tevreden en niet echt begonnen. | ||||||
DaFan | donderdag 23 februari 2006 @ 14:44 | |||||
Als je vragen hebt horen we het wel ![]() | ||||||
Chandler | vrijdag 7 april 2006 @ 12:56 | |||||
Ik zit met een klein probleem:
het probleem zit in todrive.path maar kan niet zorgen dat wanneer het path fout is het script naar de volgende goto gaat? wat doe ik fout? | ||||||
DiRadical | vrijdag 7 april 2006 @ 13:36 | |||||
quote:Als je todrive.path fout gaat, moet je IF toch ook fout. Ik lees tenminste dezelfde argumenten in de functie. Waneer je je on error goto voor de IF zet, zou het goed moeten gaan | ||||||
Chandler | vrijdag 7 april 2006 @ 13:59 | |||||
ah juist, je hebt gelijk~! maar ook na de aanpassing blijft de error hetzelfde.
error bij toDir.path = QueryValue ![]() | ||||||
DaFan | vrijdag 7 april 2006 @ 14:04 | |||||
Kan je niet beter eerst QueryValue toewijzen en dan met een IF kijken of toDir.path leeg is? | ||||||
DiRadical | vrijdag 7 april 2006 @ 14:31 | |||||
Wat is toDir. Een drivelistbox of een filelistbox Het kan zijn dat de directory moet bestaan voordat je 'm mag toewijzen aan 1 van deze controls Je zou kunnen controleren of de directory bestaat via het FileSystemObject. Maar dan moet je in je project wel eerst een referentie zetten naar Microsft Scripting Runtime. Dat kan in Project-> references Deze staat in <je windows dir>\system32\scrrun.dll
[ Bericht 4% gewijzigd door DiRadical op 07-04-2006 14:35:16 (code beter gemaakt) ] | ||||||
Chandler | vrijdag 7 april 2006 @ 14:46 | |||||
Maar het zou toch moeten werken met een onerror??? tenminste dat leek mij zo logisch... | ||||||
DiRadical | vrijdag 7 april 2006 @ 15:34 | |||||
Oeps, Ik had het zelf even moeten controleren in VB6 zelf Deze moet anders
Hij crashed 2 keer. 1 keer op de queryvalue toewijzing en de tweede keer op de c: toewijzing ![]() | ||||||
Chandler | vrijdag 7 april 2006 @ 22:42 | |||||
hoe moet dat dan anders? want het werkt wel als ik juiste gegevens in het register heb ![]() ![]() | ||||||
DiRadical | zaterdag 8 april 2006 @ 17:43 | |||||
quote:Je zegt dat de directory niet bestaat. Dus zou het zo moeten
De registry key wordt correct uitgelezen maar kan niet toegewezen worden aan toDir.path De applicatie springt naar topathErr: Maar
geeft ook een foutmelding. Deze bestaat ook niet. Het moet
zijn | ||||||
Chandler | zaterdag 8 april 2006 @ 17:48 | |||||
correct, maar dan nog geeft het een error op toDir.path = QueryValue ![]() oftweel hier zit het probleem op regel 3!! (toDir.)
| ||||||
Chandler | vrijdag 28 april 2006 @ 16:17 | |||||
Iets anders, hoe kun je iets berekenen. Ik heb iets in een textboxje staan en wil daar uit het getal halen en een getal bij optellen... hoe doe je dat? want form.text1.value + iets = de value van text1 + "iets" en het moet eingelijk zijn text1 + iets = ietsmeer ![]() Iemand een idee? | ||||||
SuperRembo | vrijdag 28 april 2006 @ 17:43 | |||||
Tekst omzetten naar getal, berekening uitvoeren, uitkomst omzetten naar tekst. | ||||||
Chandler | vrijdag 28 april 2006 @ 17:54 | |||||
ik dacht dat ik dat met INT kon doen maar dat gaat helaas ook niet werken ![]() ![]() | ||||||
SuperRembo | vrijdag 28 april 2006 @ 18:32 | |||||
CInt(), CLng() of CDbl() | ||||||
Chandler | vrijdag 28 april 2006 @ 19:34 | |||||
Inderdaad, maar toch is het probleem nog niet opgelost ![]()
ik krijg nu weer een foutje, met of zonder cstr ![]() ![]() De fout krijg ik ook op het volgende
type-mismatch.. ![]() [ Bericht 18% gewijzigd door Chandler op 28-04-2006 22:11:34 ] | ||||||
Chandler | zondag 30 april 2006 @ 13:09 | |||||
reeds gefixt door val() te gebruiken, dit werkte namelijk ook. weer een andere, hoe kan ik een getal naar boven afronden ookal is het logischer om deze naar beneden af te ronden. bv 4.1 wordt 5 ![]() | ||||||
DiRadical | vrijdag 5 mei 2006 @ 15:51 | |||||
RoundUp en RoundDown functiequote:Ook QueryValue moet een padnaam met een \ aan het eind terug geven, controleer de registry of maak een functie die een \ toevoegt als die niet aanwezig is. | ||||||
Chandler | woensdag 9 augustus 2006 @ 18:10 | |||||
Leuke vraag. Ik heb een applicatie die nogal wat data kopieeert, echter als ik die applicatie op de voorgrond houd zie ik alles wat er gebeurd. Maar als ik even een ander programma op de voorgrond heb en weer terug switch loopt als het ware de 'weergave' vast. Het programma blijft wel werken maar de weergave blijft staan. Heeft iemand een idee waardoor dit kan komen? en of hoe ik dit kan oplossen? | ||||||
SuperRembo | woensdag 9 augustus 2006 @ 20:57 | |||||
Je moet zorgen dat af en toe de events worden afgehandeld. Dat doe je met de functie DoEvents. Die moet je af en toe aanroepen in de loop die de data verwerkt. Je moet 'm ook niet te vaak aanroepen, want het zal er wel iets langzamer door worden. | ||||||
Chandler | donderdag 10 augustus 2006 @ 21:37 | |||||
Owkee, ik heb het geprobeerd en lijkt te werken. Nu een tweede vraag. Ik heb ooit een project van QuietGuy omgebouwd tot tray progie... echter krijg ik de balon niet precies onder de icon in de tray. source : http://dump.bruggema.nl/bwm.rar wie wil eens kijken wat ik fout heb gedaan!? ![]() | ||||||
whosvegas | dinsdag 13 februari 2007 @ 20:07 | |||||
Een kickje omhoog ![]() Toch leuk om het oude vertrouwde VB 6 weer te zien ![]() | ||||||
DaFan | dinsdag 27 maart 2007 @ 16:36 | |||||
Ik ben er ook weer eens mee aan het pielen, Visual Basic 2005 Express (ja gratis :P ). Hoe kan ik kijken of een String in een Textbox alleen uit cijfers bestaat of ook uit text? Ik doe het volgende namelijk maar daar crashed ie (duh) op:
Maar je kan niet converten naar een Double als er leeskarakters in staan. Dus ik moet eerst testen of er tekst in staat en dan een error geven (of op de Change al testen en dan gewoon de invoerknop disablen). | ||||||
SuperRembo | dinsdag 27 maart 2007 @ 19:43 | |||||
Dat kan op verschillende manier, welke het handigste is hangt er van af wat je er verder mee wil. Als je de string naar een getal om wil zetten dan moet je eens kijken naar Interger.TryParse(), Double.TryParse() of Decimal.TryParse(). Je zou ook met Like kunnen kijken of er ongeldige tekens in staan. Een regular expression zou ook kunnen, maar dat is denk ik niet nodig. | ||||||
DaFan | dinsdag 27 maart 2007 @ 20:02 | |||||
Ok, tnx alvast, morgen ff naar kijken ![]() | ||||||
DaFan | woensdag 4 april 2007 @ 10:17 | |||||
Tis gelukt Rembo, maar ik heb het gewoon gedaan met Val() zodat als er een String in staat het resultaat gewoon 0 is, dat werkte uiteindelijk ook ![]() Edit nvm al gelukt ![]() Andere vraag ![]() Ik wil in een keer een hele grote groep labels en textboxes visible maken. Nou dacht ik slim te zijn en alle txtboves en labels ongeveer dezelfde naam te geven
En er dan doorheen te loopen zodat ik elke keer de Double kan verhogen met 1 zodat alle 29 labels niet meer visible gemaakt kunnen lopen. Maar ik kan hier natuurlijk geen .visible = True achter zetten. Iemand een idee hoe ik dit wel kan doen, snel en makkelijk zonder 2x 29 keer alles [NAAM].visible = True te doen? Zoiets dus:
Label zou dan de naam van 29 verschillende labels worden die allemaal Visible = True moeten worden [ Bericht 44% gewijzigd door DaFan op 04-04-2007 13:02:06 ] | ||||||
SuperRembo | woensdag 4 april 2007 @ 14:09 | |||||
quote:Val() is zo'n wazige VB6 functie. Die kan je beter niet gebruiken. quote:Je zou de labels allemaal in een array kunnen zetten. Of misschien kan je er voor zorgen dat ze allemaal op 1 panel o.i.d. staan zodat je ze in 1x zichtbaar kan maken. Of je kunt door de controls collection van het form / panel / groupbox kunnen lopen. | ||||||
The_Terminator | donderdag 5 april 2007 @ 00:01 | |||||
quote:Een array van labels is het makkelijkste, dan wordt het ongeveer zo:
Een array is te maken door één label te copieren en dan te plakken, wel voor array kiezen als VB dat vraagt. [ Bericht 1% gewijzigd door The_Terminator op 05-04-2007 12:27:11 ] | ||||||
whosvegas | donderdag 5 april 2007 @ 07:59 | |||||
quote: ![]() Hoezo, als je weet wat de functie doet, waarom zou je het niet gebruiken? | ||||||
SuperRembo | donderdag 5 april 2007 @ 13:24 | |||||
Val() bestaat eigenlijk alleen nog om VB wat beter backwards compatible te maken. Als je nieuwe code schrijft is het niet handig om oude VB functies als Val(), Mid() en Format() te gebruiken. Val() ondersteunt alleen een decimale punt, bij Double.Parse kan je makkelijk gelocaliseerde input ondersteunen. String functies als Mid() gebruiken een 1-based index terwijl alle "normale" .NET functies een 0-based index gebuiken. En dan zitten er ook nog vreemde bugs in. Replace("", "foo", "bar") geeft in VB.NET bijvoorbeeld Nothing terug in plaats van een lege string. | ||||||
Chandler | vrijdag 20 juli 2007 @ 15:28 | |||||
Vraagje... Ik heb een loopje in mijn vb applic. echter wil ik per loop de resultaten laten zien in mijn form. Nu doe ik form1.status_box.text = "Status" Echter zie ik pas na het doorlopen van deze loopje de status van de laatste item op deze plaats komen. What am i doingk wrong? ![]() | ||||||
SuperRembo | vrijdag 20 juli 2007 @ 15:57 | |||||
Application.DoEvents() | ||||||
Chandler | vrijdag 20 juli 2007 @ 16:39 | |||||
![]() Nog 1 vraagje. Ik werk nu met line input, echter werkt dit bij 1 groot tekst bestand niet.. Line input ziet niet dat het een tekst bestand is en leest gelijk het hele bestand uit... wat kan ik hier aan veranderen zodat hij wel alle regels leest? Anyone? ![]() [ Bericht 71% gewijzigd door Chandler op 20-07-2007 17:32:27 ] | ||||||
EggsTC | vrijdag 20 juli 2007 @ 17:42 | |||||
quote:VB.net? Meer info ? | ||||||
Chandler | vrijdag 20 juli 2007 @ 18:00 | |||||
Waar doel je op EggsTC? Ik zal even iets uitgebreidere info geven. Het bestand is opgezet als een UNIX tekst bestand, echter moet ik natuurlijk met VisualBASIC voor line input een Windows Tekst bestand hebben. Ik heb geprobeerd via wordpad en notepad++ alles om te zetten naar een tekst bestand met windows encoding. Echter is alles mislukt.. en deze progies crashen.. Nu zoek ik naar een oplossing ![]() VB.net gaf geen bevredigend antwoord ![]() http://www.thefreecountry.com/tofrodos/ is een handig programmatje om UNIX documenten te converteren naar Windows documenten en visa versa [ Bericht 31% gewijzigd door Chandler op 20-07-2007 18:55:17 ] | ||||||
SuperRembo | vrijdag 20 juli 2007 @ 20:12 | |||||
Met een TextReader zou het moeten kunnen. ReadLine geeft 1 regel terug:quote: | ||||||
Chandler | vrijdag 20 juli 2007 @ 21:26 | |||||
quote:Ik hoop dat het werkt, want die converter kan geen UTF-8 tekens converteren ![]() This page is specific to .NET Framework 3.0 ![]() [ Bericht 10% gewijzigd door Chandler op 20-07-2007 21:36:44 ] | ||||||
SuperRembo | zaterdag 21 juli 2007 @ 10:56 | |||||
quote:De TextReader class bestaat al sinds .NET 1.0. Het lijkt me niet dat er heel veel in veranderd is. | ||||||
Chandler | zaterdag 21 juli 2007 @ 11:23 | |||||
Ow :{ Ik was zelf even aan het knutselen maar doe iets erg verkeerd :P
Alleen is het probleem dat txt altijd leeg blijft :{. Of moet ik zo ie zo de positie van het in te lezen bitje specificeren? zo gaat ie toch telkens ook 1 positie naar boven? | ||||||
SuperRembo | zaterdag 21 juli 2007 @ 12:16 | |||||
Kolere wat een ranzige code ![]() In VB.NET kan het zo:
| ||||||
Chandler | zaterdag 21 juli 2007 @ 12:24 | |||||
Ik heb helaas geen VBnet... ( Ennuh opzich is mijn code toch wel juist? ![]() | ||||||
SuperRembo | zaterdag 21 juli 2007 @ 12:53 | |||||
quote:Visual Studio Express is gratis. quote:Geen idee, ik ben niet zo thuis in die VB6 file handling. | ||||||
Chandler | zondag 22 juli 2007 @ 15:50 | |||||
Hmm... Lijkt mij toch wel aardig goed te zijn ![]() Ik heb mijn code een beetje aangepast en heb dit nu in een loop staan.
echter wil de loop niet stoppen als readByte (10 of 13) is ![]() ![]() [ Bericht 88% gewijzigd door Chandler op 22-07-2007 17:26:36 ] | ||||||
The_Terminator | zondag 22 juli 2007 @ 18:43 | |||||
quote:Vreemt. Wat je zou kunnen proberen is in plaats van een Do loop een For loop gebruiken. Dan zou het worden:
| ||||||
SuperRembo | zondag 22 juli 2007 @ 18:59 | |||||
In .NET gaat het veel makkelijker, maar als je dan per see in VB6 wil klooien, gebruik dan gewoon een FileSystemObject.
(Wel even een referentie aan je project toevoegen naar Microsoft.Scripting) | ||||||
Chandler | maandag 23 juli 2007 @ 09:14 | |||||
Ik weet al wat ik fout deed
zegt readbyte is geen 13 OF pointCnt is kleiner dan fileSize, maar het moest eingelijk zijn readByte is geen 13 EN pointCnt is kleiner dan fileSize oftewel
| ||||||
Woeiii | zaterdag 10 mei 2008 @ 14:02 | |||||
Ben bezig met een kleine functie om een getal van 6 aaneensluitende nummers uit een string te halen, maar t wil niet echt lukken:
Deze haalt alle getallen uit een lap tekst , maar werkt niet goed hij returned namelijk steeds nul , heeft iemand een oplossing? -O- | ||||||
Marc H | zaterdag 10 mei 2008 @ 18:00 | |||||
quote:Les 1: nooit "on error resume next" gebruiken tijdens debuggen! als je dat doet zie je dat je een overflow error krijgt in "ExtNum = CInt(strNum)" op een 6 cijferig getal een integer conversie doen gaat ook niet werken. omdat een integer maximaal "32,767" kan bevatten. dus zal je het getal moeten converteren naar een double, in plaats van een integer. En dat moet je natuurlijk ook aanpassen in je function. dus dan krijg je deze code:
En nog iets, als je al zonodig on error resume next wil gebruiken in een stuk code, zet dan de error trapping weer aan voor je de fnction verlaat. [ Bericht 3% gewijzigd door Marc H op 10-05-2008 18:05:20 (') ] | ||||||
hello_moto1992 | dinsdag 7 oktober 2008 @ 10:54 | |||||
Sorry voor de grote kick, maar... Ik zou graag een programma willen maken dat een rekening bij houdt in een kantine/keet. Je hebt dus een lijstje met namen, en daar achter staat bier, wijn, cola, malibu etc. In Excel kun je "view code" doen, maar dan staat er niks. Hoe kan dat? En hoe maak ik het handigste zo'n programma? | ||||||
DaFan | dinsdag 7 oktober 2008 @ 11:07 | |||||
Kan je beter in het Excel topic doen. [EXCEL] Het grote Excel vragen topic, #7 En onder View code is het de bedoeling dat je zelf de code schrijft ![]() | ||||||
DiRadical | dinsdag 7 oktober 2008 @ 11:08 | |||||
quote:De truuk is net dat je die code zelf moeten maken. ![]() Je zou de namen in de eerste kolom kunnen zetten en de drankjes in de eerste regel (vanaf kolom 2) In het gebied daaronder kun je de aantallen in vullen. In het kruispunt van Naam en Drankje staat het aantal. Wil je ook nog berekenen wat de totaal prijs is? Ik zou dan de drankjes en prijzen in een apart werkblad stoppen en een formule maken die berekening deze gegevens ophaalt. Zo kun je zelfs je prijzen veranderen zonder de formules aan te passen. ![]() Dat kan met een VLOOKUP (of was het nu een HLOOKUP, in ieder geval 1 van die 2) Hiervoor is geen VB code nodig, alleen maar Excel formules. | ||||||
hello_moto1992 | dinsdag 7 oktober 2008 @ 11:16 | |||||
quote:Ik kwam er ook achter ![]() Op dit moment hebben wij een rekening als volgt: Lijst met namen - Aantal Dit, Dat, etc. - bedrag Het aantal bier wordt bijvoorbeeld steeds veranderd in 2, 3,4,5. Dit kan dus nog al eens misgaan. Het is misschien handiger om een button te hebben en daarnaast een aantal. Dus als je er op klikt je een extra opschrijft. Ik dacht dat je daar ff snel een programmaatje van kan maken in VB. Valt tegen dus ![]() | ||||||
DaFan | dinsdag 7 oktober 2008 @ 11:19 | |||||
In VB is het een stuk lastiger omdat je geen 'database' hebt. Als je het in Excel icm VBA doet heb je gewoon een overzicht waar je idd gewoon een knopje kan drukken achter iemands naam, waarbij hij de waarde opzoekt die het nu is, en er 1 bij optelt. Simpel. | ||||||
DiRadical | dinsdag 7 oktober 2008 @ 11:36 | |||||
Je zou Excel kunnen misbruiken als database. Ieder werkblad is dan een tabel. Je bent niet de eerste die dat zou doen ![]() Maar dan zou ik order regels aanmaken op een apart werkblad naam- drankje- aantal- prijs perstuk En aan het eind van de avond alles optellen om een rekening te maken. Je zou ook gewoon een printje kunnen maken van een tabel met namen en drankjes. Streepjes zetten in de cellen en aan het eind alles optellen. Dat is de KISS versie | ||||||
mschol | dinsdag 7 oktober 2008 @ 21:29 | |||||
quote:vb kan je redelijk simpel met mysql laten comminiceren | ||||||
DaFan | woensdag 8 oktober 2008 @ 04:05 | |||||
quote:Akkoord maar niet voor een dranklijst en al helemaal niet als je nog nooit VB gebruikt hebt ![]() | ||||||
DiRadical | woensdag 8 oktober 2008 @ 09:04 | |||||
quote:Als het toch op 1 PC draait zou ik eerder SQLLite of misschien Firebird gebruiken. | ||||||
Marc H | woensdag 8 oktober 2008 @ 13:37 | |||||
Ik zou dan toch fijn voor vb gaan, en zorgen dat elke wijziging meteen naar disk weggeschreven wordt. Stel je hebt een feestavondje, en een uur voor sluiten crashed je pc. kan je dan nog achterhalen wat iedereen besteld heeft? | ||||||
Chandler | woensdag 19 mei 2010 @ 21:44 | |||||
Aangezien ik toch weer eens aan de slag moest en als noob weer eens iets niet snap, zelfs niet na veel zoeken vraag ik het maar hier :) Ik heb de volgende code, die ik wil gebruiken om te controleren of een directory bestaat MsgBox FolderExists(strStartPath) in mijn geval [b]C:\Documenten and Settings\Gebruiker\Mijn documenten[/b en die bestaat, echter geeft de MsgBox een false aan terwijl deze true moet zijn? code?
anyone? | ||||||
DiRadical | donderdag 20 mei 2010 @ 13:46 | |||||
Code werkt. Is sFullPath wel gevuld? Wordt wel goed gekoppeld aan de msgbox? | ||||||
Chandler | donderdag 20 mei 2010 @ 14:02 | |||||
Idd, ik kwam er achter dat een letter qua functienaam niet goed stond en dus geen true/false (boolean) terug stuurde.. wat kun je toch over foutjes heen kijken zeg ![]() | ||||||
DiRadical | donderdag 20 mei 2010 @ 14:15 | |||||
quote:Je gebruikt geen Option Explicit (aan het begin van je code staat in ieder bestand). ![]() Foei ![]() Dat Microsoft het standaard niet aan zet in VB is overigens nog erger. | ||||||
Chandler | donderdag 20 mei 2010 @ 14:25 | |||||
Geplaatst!! Ik ben bezig met een backup programma! zie aanleiding: Backup meerdere folders, simpel batch/programma? preview: ![]() Mijn code:
Heb je eventueel tips? vind vooral het laden van mijn INI bestand nogal omslachtig ![]() [ Bericht 96% gewijzigd door Chandler op 21-05-2010 14:58:53 ] | ||||||
Chandler | donderdag 20 mei 2010 @ 14:26 | |||||
-edit- Ini werkt al ![]() Alles werkt op het maken van directories na... ![]() Maar ik ga er nu even lekker mee spelen! ![]() [ Bericht 45% gewijzigd door Chandler op 21-05-2010 14:59:49 ] | ||||||
DiRadical | vrijdag 21 mei 2010 @ 15:13 | |||||
quote: zoiets: Dim obj As New Scripting.FileSystemObject Dim ofld As Folder set ofld = obj.GetFolder("c:\temp") ofld.SubFolders.Add ("test") | ||||||
Chandler | vrijdag 21 mei 2010 @ 15:53 | |||||
Klopt maar het ging om een diepere structuur ![]() Dat is inmiddels gelukt en heb nu een werkend projectje! ![]() Hier te downloaden in source van visualbasic 6 ![]() Lukt al aardig dus Opties - Drive noemer mee nemen (gemakkelijk als je vaak dezelfde directories in je roots hebt) - Ook subdirectories doorlezen? - Extensies overslaan - Overschrijven? alleen als deze veranderd / nieuw is. - 0 bestanden/directories ook kopieren (moet nog inbouwen, deels zeg maar... nu wordt een directory pas aangemaakt als er een bestand naartoe geschreven wordt.) - Doel drive en path aangeven - Meerdere bronnen toevoegen aan overzicht - Meerdere bron lokaties verwijderen in 2 klikken (selecteren, verwijderen) Statistieken - Aantal MB's - Aantal gekopieerde Mb's - Aantal bestanden - Aantal gekopieerde bestanden - Aantal geskipte bestanden - Aantal fout bestanden (Geskipt) (bv in gebruik, etc) - Actie Alleen werk ik nu nog met de copy van filesystemobject en daar wil ik eingelijk iets anders voor, eventueel met een voortgangs balk oid? lol Maar goed, ik hoor graag comments ![]() [ps] Hier draai ik het nu met zo'n 200K aan bestanden, duurt een beetje erg lang.. maar minder lang dan verwacht....... | ||||||
MWP | vrijdag 21 mei 2010 @ 17:17 | |||||
quote:VB6 nog? Je weet dat Microsoft inmiddels van haar .net-versies ook gratis versies van de ontwikkelstudio's uitbrengt? Onder andere Visual Basic .net 2008 is gratis te downloaden: http://www.microsoft.com/exPress/ Deze versies zijn een bijzondere verbetering t.o.v. vb6, onder meer omdat er met .net meer mogelijk is zonder aanroep van extra DLL's maar rechtstreeks vanuit .net. Kan me voorstellen dat je voor dit project niet graag de omschakeling wilt maken (hoewel projecten vaak 1-op-1 geconverteerd kunnen worden), maar het loont de moeite om hier eens naar te kijken voor andere applicaties ![]() Ik merk zelf dat ik sneller werk met 2005 - en nu met 2008 ![]() | ||||||
Chandler | vrijdag 21 mei 2010 @ 17:23 | |||||
Ja VB6 ![]() ![]() ![]() ![]() Heb je nog tips voor de huidige code? | ||||||
MWP | vrijdag 21 mei 2010 @ 22:13 | |||||
quote:Het mooie van VB.net is dat de syntax onveranderd is maar dat het op sommige punten eenvoudiger is om - bijvoorbeeld met het bestandsysteem - te werken. Om je een voorbeeld te noemen, in vb.net is er standaard een functie aanwezig om te controleren of een bestand bestaat: System.IO.File.Exists(path as string). Dat scheelt, want dan hoef je filesystemobject niet steeds opnieuw te declareren. Ook bijvoorbeeld de functie je je gemaakt hebt om de extensie van een bestand te controleren, is in vb.net aanwezig:
In .net is er ook een nieuwe control 'backgroundworker', waarmee je op de achtergrond bepaalde taken kunt uitvoeren (zoals het kopiëren, waardoor het programma niet hangt tenzij je application.DoEvents() gebruikt. Onder VB6 zou je in elk geval de volgende dingen kunnen aanpassen: Verder ziet de code er vrij oké uit ![]() ![]() | ||||||
Chandler | zaterdag 22 mei 2010 @ 16:23 | |||||
Dan maar weer een kleine update, zelfde bestand. Aardig wat ifjes verwijderd. nu 1 aanroep voor alle fso objecten meer gegevens in error string. En een exe toegevoegd... weet niet of dat handig is maar goed ![]() Gaat nu zeker een stuk sneller, en volgens mij eet het ook minder geheugen.. | ||||||
Chandler | zondag 23 mei 2010 @ 11:23 | |||||
Nou geheugen valt dus tegen... 50-80mb erg schommelend... Ook gaan de eerste 10.000 bestanden aardig rap maar daarna gaat het steeds slomer... iemand een idee waardoor dit zou kunnen komen? | ||||||
mschol | zondag 23 mei 2010 @ 11:28 | |||||
quote:"vol" lopen van het geheugen? | ||||||
Chandler | zondag 23 mei 2010 @ 11:46 | |||||
hoe bedoel je met vol? het schommelt nu opeens tussen de 20-50mb? ![]() | ||||||
Chandler | zondag 23 mei 2010 @ 21:17 | |||||
Hier een filmpje van het geheugen gebruik? snap niet waar het hem in zit.. Anyone? | ||||||
mschol | zondag 23 mei 2010 @ 21:46 | |||||
ik bedoel: misschien zijn er variablen oid die blijven hangen in het geheugen waardoor hij trager wordt omdat hij meer moet onthouden oid? | ||||||
Chandler | zondag 23 mei 2010 @ 22:01 | |||||
Yup, dat was idd het euvel, voor ieder bestand dat na controle op datum geskipt werdt was terug te vinden in de log en dat is met 200k aan bestande niet grappig... nu deze weg gehaalt zit het geheugen gebruik op 5MB en loopt het nu alle bestanden in zo'n 5 minuten langs!!!! ipv een halve dag ![]() | ||||||
MWP | maandag 24 mei 2010 @ 20:37 | |||||
quote:Leuk om te zien dat het werkt! Je zou i.p.v. "AND" ook "ANDALSO" kunnen gebruiken, dat zal iets in performance schelen. In dit voorbeeld:
Wordt de conditie C=D altijd gecontroleerd, ook als A!=B, terwijl als je:
gebruikt, C=D alleen wordt gecontroleerd als A=B. Dat scheelt op het aantal statements en het aantal bestanden wat je doorloopt aardig wat vergelijkingen! quote:Grappig dat dat zo erg scheelt :) | ||||||
Chandler | dinsdag 25 mei 2010 @ 07:34 | |||||
Grappig is idd dat het geheugen dan zo sprint.. waarom? geen idee maar goed. Zal andalso ook eens proberen ![]() | ||||||
Modus | maandag 3 januari 2011 @ 19:06 | |||||
Ik ben met een studieopdracht bezig. Een simpel programmaatje om een soort orderlijst te maken en daarnaast moet je nog een programma maken om die orderlijst te veranderen. Ik moet dus 2 .exe's maken (kan ms ook anders maar het voorbeeld heeft er ook 2). Min of meer de enige hint die gegeven werd voor het samen gebruiken van die 2 is dat VB (Express in mijn geval) een Process component in de toolbox heeft. Ik heb echter geen idee hoe en wat verder, als ik zo'n ding in mijn eerste programma toevoeg. In prog 1 zit een knop Edit orderlist die prog 2 laat opstarten. Ik heb echt geen idee wat voor code ik ongeveer zou moeten gebruiken onder die knop om dat voor elkaar te krijgen. En als ik wel code heb, wat is dan het nut van dat component in mijn project?? Verder is dus het idee dat gegevens uit prog 2 weer verwerkt worden in prog 1. Ook geen idee hoe dat zou moeten (variabelen binnen meerdere forms snap ik wel), of gaat dat min of meer 'automatisch' door juist gebruik van dit onderdeel? Heb hier al wat zitten kijken http://msdn.microsoft.com(...)nostics.process.aspx maar daar word ik niet heel veel wijzer van vooralsnog. | ||||||
EggsTC | maandag 3 januari 2011 @ 19:30 | |||||
Je kan met een winAPI die box uitlezen. ik snap ook niet helemaal wat je bedoelt tho. | ||||||
ralfie | maandag 3 januari 2011 @ 19:57 | |||||
dat lijkt me vb.net en dat is iets waar de meeste mensen in dit topic allergisch voor zijn. En gelijk hebben ze met een process kun je (zo te zien) vrij makkelijk standardinput en standardoutput redirecten. Daarmee kun je nogal wat data snel over en weer hevelen. Dat zou mijn eerste keus zijn denk ik. Anders, tjah, moeten het echt twee verschillende programma's zijn? Shared memory e.d. lijkt me tamelijk geavanceerd voor iemand die je durft in vb.net te laten leren. Maar je zult wel moeten als het het netjes wilt doen. Anders kun je het nog met Send/PostMessage, winapi's en het vieze 'een bestandje waarin beide programma's lezen en schrijven'. | ||||||
Modus | maandag 3 januari 2011 @ 20:11 | |||||
Ja je moet gewoon het voorbeeldprogramma functioneel namaken, de enige hint die ik voor dit gedeelte kreeg was die Process component. Ms denk ik wel veel te moeilijk en is het een kwestie van prog 2 laten opstarten vanuit prog 1 (met een beetje kloten lukt me dat nog wel denk ik) maar wat is dan nog de bedoeling van dat component in je form inbouwen?? Ms voor het plaatje, prog 2 leest een text bestand in dat eerst door prog 1 gevuld is. Dat txtbestand kun je dan wijzigen, na afsluiten van prog 2 worden de nieuwe gegevens weer in prog 1 verwerkt. Deze opdracht is echt bizar veel moeilijker dan alle voorgaande en je krijgt alleen maar een paar trefwoorden als hulp zeg maar. | ||||||
Core2 | maandag 3 januari 2011 @ 21:20 | |||||
Misschien zoiets?
| ||||||
Core2 | maandag 3 januari 2011 @ 21:28 | |||||
Het is dan ook niet zo moeilijk meer om van B naar A te gaan lijkt me. Je kunt dus communiceren via stdin/stdout. Je hebt nog wel wat andere mogelijkheden (named pipes, memory mapped files, tcp/ip, etc) waar je denk ik nog wat te weinig ervaring voor hebt (met alle respect ![]() | ||||||
Modus | maandag 3 januari 2011 @ 21:50 | |||||
Het zal wel een beetje in die richting gaan zoals jouw code, maar ik kan me gewoon niet voorstellen dat dat de bedoeling is... 1 trefwoord 'Process' en dan moet je bovenstaande er zelf maar bij uitzoeken... | ||||||
Modus | dinsdag 4 januari 2011 @ 09:32 | |||||
Ik denk dat ik veel te moeilijk dacht in eerste instantie. Volgens mij is het de bedoeling dat ik vanuit prog 1 prog 2 laat opstarten, die laatste gegevens laat verwerken in het textbestandje, prog 2 weer sluiten en vervolgens prog 1 de vernieuwde gegevens weer laten uitlezen uit dat textbestandje. Op die manier is er dus geen sprake van rechtstreeks overdracht tussen 2 exe's. | ||||||
Catbert | dinsdag 4 januari 2011 @ 14:39 | |||||
Volgens mij is het gewoon de bedoeling dat ze die data in een textfile of DB opslaan. Snap niet dat mensen hier rare oplossingen als communicerende applicaties gaan bedenken. In VB wat in een access DB frutten is triviaal. | ||||||
Core2 | dinsdag 4 januari 2011 @ 21:21 | |||||
Je kunt die opdracht op meerdere manieren interpreteren, ik heb geen idee wat de context is. Er wordt gesproken over het Process object, een orderlijst en twee applicaties die iets met die orderlijst moeten doen. Niet zo gek dat je dan bij communicerende processen uitkomt, maar zou me niks verbazen als ze inderdaad een database oplossing bedoelen. | ||||||
Modus | dinsdag 4 januari 2011 @ 23:26 | |||||
Even voor de duidelijkheid: het voorbeeldprogramma is wel zo duidelijk dat er geen twijfel is over het moeten gebruiken van een textfile. App 1 is een soort orderprogramma en schrijft op de achtergrond gegevens weg in dat text bestand en wil je wat wijzigen daarin dan moet dat via app 2. Ik zat bij mijn eerste post verkeerd te denken, nl. ongeveer dit: -app2 starten en daarmee -wijzigingen in text file opslaan -app 2 weer sluiten ik was in de veronderstelling dat die gewijzigde gegevens alleen naar app1 'overgeheveld' zouden kunnen worden door ze in arrays ofzo te verwerken, en ik zag gewoon niet (als dat al kan) hoe dat zou moeten, dat overdragen tussen 2 exes. Dat zou ook nog heel veel ingewikkelder zijn dan wat ik tot nu toe in de lesstof gezien heb, dus kon me al nauwelijks voorstellen dat dat de bedoeling zou zijn. Ik moet het nu nog uitwerken maar wat ik volgens mij moet doen is: -app 2 opstarten -wijzigingen opslaan -app 2 weer afsluiten en in diezelfde event zorgen dat app 1 meteen daarna de nieuwe gegevens uit dat textbestand weer inleest en verwerkt in o.a. het prijzengedeelte. Verder werd dus bij de tips gesproken over de Process class, met een miniem stukje code als voorbeeld, en daarna werd gerefereerd naar het aanwezig zijn van een Process component in VB die je gewoon in je form kan slepen en wat blijkbaar 1 en ander zou vereenvoudigen. Hoe ik die component dan zou moeten gebruiken is me nog niet helemáál duidelijk, met alleen die code kom ik er eerder uit denk ik. Hoop dat zo een beetje duidelijk is wat de bedoeling van de opdracht is en daarmee van mijn vraagstelling. | ||||||
Modus | maandag 18 juli 2011 @ 23:16 | |||||
Na vastlopen en ander geneuzel de studieopdracht maar weer opgepakt. Waar ik nog steeds mee zit is: Is mijn denkwijze überhaupt wel goed voordat we ook maar aan code gaan denken (zie ook mijn post hierboven). Is het mogelijk om in App2 het 1 en ander te doen (terwijl App1 dan op de achtergrond 'wacht'), dat vervolgens af te sluiten waarna App1 weer 'actief' wordt maar op het moment van actief worden moet er in App1 ook het 1 en ander gebeuren (gegevens bijgewerkt, een soort 'refresh' zeg maar). Kan ik überhaupt elementen in App1 rechtstreeks aanroepen vanuit App2? Zo nee, dan moet er dus iets gebeuren zodra App2 klaar is. Maar hoe laat ik App1 weten dat App2 klaar is?? Kan het niet duidelijker verwoorden... hoop dat iemand tips heeft. Heb de docent ook nog maar eens gemaild maar daar krijg ik altijd als het meezit 3 woorden antwoord van. | ||||||
DiRadical | woensdag 20 juli 2011 @ 15:08 | |||||
Eerste hit in Google kom uit bij About.com Je kunt vanuit App1 een nieuw proces met applicatie App2 starten. Als je een textbestand hebt opgeslagen in App1 kun je die meegeven als parameter en deze parameter weer uitlezen in App2. In App2 kun je je bewerking uitvoeren en opslaan (in hetzelfde tekst bestand) Daarna kun je App2 sluiten. Door myProcess.WaitForExit() toe te voegen aan de code nadat je myProcess gestart bent wordt het uitvoeren van de rest van de code van App1 gestopt. Daarna kun je in App1 het bestand weer openen en de wijzigingen inlezen. | ||||||
Modus | maandag 1 augustus 2011 @ 21:26 | |||||
Thanks, had je reply nog niet gezien. Ik heb dat stukje inmiddels ook werkend kunnen krijgen. Ben inmiddels weer iets verder gevorderd. Nu wat anders, een wat specifieker probleem, dus ms makkelijker om uit te zoeken. Na het sluiten van App2 laat ik het txt-bestand opnieuw openen, dat moet regel voor regel uitgelezen worden, elke regel moet opgesplitst naar een array en het eerste item van deze array moet als zoekterm gebruikt worden om in de Listbox van App1 het bijbehorende item terug te vinden. Leek allemaal goed te gaan maar het juiste Listbox.Item wordt niet goed bijgewerkt. Nader onderzoek leert dat die array vullen niet goed gaat, maar ik zie niet wat ik daar fout aan doe. Heb ongeveerd e volgende code:
Als er maar 1 regel in het textbestand staat, verschijnt in label5 wel text, maar in 6 niet. Staan er meer regels in het textbestand dan blijven zowel label5 als 6 leeg. Zit dat hem wellicht in hoe het textbestand uitgelezen wordt? Is er een andere manier om regel voor regel uit te lezen? | ||||||
MWP | maandag 1 augustus 2011 @ 22:39 | |||||
Je leest nu door deze code steeds twee regels uit het bestand.
Van die tweede regel zou je dus eigenlijk dit moeten maken:
| ||||||
Modus | maandag 1 augustus 2011 @ 22:46 | |||||
Is dat zo? Alles wat binnen de Do While-Loop code valt gaat toch over dezelfde regel? Heb de code aangepast zoals je aangeeft en dan gebeurt er nog steeds niks, label5 en 6 blijven leeg. | ||||||
MWP | maandag 1 augustus 2011 @ 22:58 | |||||
Het enige wat deze Do zegt is dat er code moet worden uitgevoerd zolang er nog tekst te vinden is in het bestand. Met .Peek() kijk je namelijk naar de volgende regel, hij wordt dan nog niet gelezen, dat gebeurd pas met .ReadLine() die je twee keer aanroept ![]() Ah, maar dan gebeurd er dus wel wat anders dan net! ![]() ![]() Dat nu ook label5 leeg blijft kan worden veroorzaakt doordat het tekstbestand wat je inleest een witregel aan het einde heeft o.i.d., heb je daar al naar gekeken? Kan je eenvoudig controleren in notepad of door een breakpoint aan het begin van je code neer te zetten en dan stap-voor-stap elke regel te evalueren en in je variabelen te kijken. | ||||||
TallMan | maandag 1 augustus 2011 @ 23:03 | |||||
Probeer inderdaad met breakpoints door je code te stappen en kijk wat er specifiek misgaat, welke variabele wordt niet gevuld zoals jij dacht. Dat je niets ziet gebeuren kan heel goed aan een witregel liggen aan het einde van de textfile zoals al was genoemd. Je labels zullen visueel niet worden geupdate zolang je nog in je Do lus zit (behalve als je dat zelf afdwingt) dus dat je daaraan niets ziet is by design. Klein puntje is dat een StreamReader een EndOfStream property heeft. Die kun je gebruiken ipv die Peek <> -1
| ||||||
Modus | maandag 1 augustus 2011 @ 23:10 | |||||
Bij het creëren en vullen van dat tekstbestand wordt idd elke keer een enter aan het einde van een weggeschreven regel toegevoegd, heb het idee dat het daar iets mee te maken heeft ja. Als ik het open en naar het einde van het bestand ga, kom ik uit onder de tekstregels, aan het begin van een nieuwe regel. Is er een manier om dat tijdens het wegschrijven al te voorkomen, of moet je iets doen waardoor je na de laatste regel de nieuwe lege regel weer delete o.i.d.? Die enter moet natuurlijk wel gebruikt worden om telkens regels onder elkaar in het textbestand te kunnen krijgen...? | ||||||
MWP | maandag 1 augustus 2011 @ 23:32 | |||||
Dan is het logisch dat jouw labels leegblijven ![]() Tijdens het wegschrijven (ik neem aan dat dat met een DO of FOR-loop gaat) zou je kunnen kijken of je met de laatste regel bezig bent en als dat het geval is, voeg je geen witregel toe. Andersom kan ook: Steeds éérst een vbNewLine toevoegen en dan pas de gewenste regel. Met een uitzondering bij de allereerste regel. | ||||||
TallMan | dinsdag 2 augustus 2011 @ 09:54 | |||||
Of bij het uitlezen van het bestand kijken of je een lege regel hebt uitgelezen en die niet processen | ||||||
Modus | dinsdag 2 augustus 2011 @ 10:04 | |||||
Dat zal denk ik de makkelijkste optie zijn, zal vanavond eens kijken thuis. Thanks. | ||||||
Modus | woensdag 3 augustus 2011 @ 21:30 | |||||
Ha ik geloof dat ik het zowaar werkend heb. Dus elke regel uit het textbestand uitlezen en de bijbehorende regel in de Listbox vervangen. Thanks voor de hulp. ![]() Nu alleen nog even iets scharrelen zodat de totaalprijs op de juiste manier opnieuw wordt uitgerekend, maar daar kom ik wel uit. |