1 2 3 4 5 6 7 8 9 | Private Sub CheckFile() If LCase(Dir("data.mdb") = "data.mdb" Then 'the file is present Exit Sub Else 'the file is not present 'code to create file here End If End Sub |
1 | ChDir (directory.Value) |
Met ChDrivequote:Op woensdag 27 juli 2005 14:40 schreef daReaper het volgende:
ha, ik heb ook een mooie vraag
ik heb (VBA, overigens) een input boxje waar je een dir in kan vullen.
Met
[ code verwijderd ]
switch ik naar de ingevulde directory, echter, dit houdt geen rekening met eventuele schijfwisseling... Weet iemand hoe ik dit beter kan doen?
Ok, bedankt voor de uitleg. Ik zal het straks proberen als ik op de andere computer zit.quote:Op woensdag 27 juli 2005 14:38 schreef Xsysstar het volgende:
Nee, u moet het FileSystemObject gebruiken dat geleverd wordt bij het Microsoft Scripting Runtime (Reference zetten).
Public FSO as FileSystemObject
Module:
dim bExists as boolean
bExists = fso.FileExists("data.mdb")
enz.
Aanmaken van een database bestand kan, geloof ik, met Microsoft DAO (= niet ADO, heeft wel raakvlak). Let erop dat als u zowel ADO als DAO gebruikt, u al uw definities volledig defineert, vanwege de dubbele klassenamen.
dim db as ADO.Database
en niet:
dim db as Database
Ja maar doe eens mooi functietje ofzoquote:
Nou, het mooie functietjequote:Op woensdag 27 juli 2005 15:29 schreef daReaper het volgende:
[..]
Ja maar doe eens mooi functietje ofzo![]()
En hoe dit dat met netwerk directory's? ( //share/bla )
1 2 | ChDrive myDir ChDir myDir |
Het wil nog niet helemaal lukken, ik heb het volgende gedaan.quote:Op woensdag 27 juli 2005 14:38 schreef Xsysstar het volgende:
Nee, u moet het FileSystemObject gebruiken dat geleverd wordt bij het Microsoft Scripting Runtime (Reference zetten).
Public FSO as FileSystemObject
Module:
dim bExists as boolean
bExists = fso.FileExists("data.mdb")
enz.
Aanmaken van een database bestand kan, geloof ik, met Microsoft DAO (= niet ADO, heeft wel raakvlak). Let erop dat als u zowel ADO als DAO gebruikt, u al uw definities volledig defineert, vanwege de dubbele klassenamen.
dim db as ADO.Database
en niet:
dim db as Database
1 2 3 | Public FSO As FileSystemObject Dim bExists As Boolean bExists = FSO.FileExists("data.mdb") |
1 2 3 4 | Private Sub Form_Load() If bExists = False Then ... ... |
1. Referencequote:Op donderdag 28 juli 2005 11:43 schreef Xsysstar het volgende:
Dat is mijn fout; ik haal module en sub door elkaar. Spijt me.
De FileSystemObject-definitie moet in de kop van de module (dat was goed).
In een sub kunt u met dat FSO-object vele functies aanroepen, waaronder FileExists. Oftewel: de bExists-definitie en het vullen ervan moet ook in Form_load.
1 | Public FSO As FileSystemObject |
1 2 3 4 5 6 | Private Sub Form_Load() Dim bExists As Boolean bExists = FSO.FileExists("data.mdb") If bExists = False Then ... ... |
Dat kan in principe overal (het FileSystemObject kan ook in een gewone sub gedeclareerd worden), maar afhankelijk van het soort referentie kan het verstandig zijn om één enkele instantie te maken van die referentie.quote:Op donderdag 28 juli 2005 11:49 schreef JanMichiel het volgende:
Is het overigens noodzakelijk om de reference (object?) in een module te declareren? Of kan dat ook gewoon in een form?
1 2 3 4 5 6 7 8 9 10 | SendString = "" For i = 0 To 500 For a = 0 To 500 SendString = SendString & inBase(i, a) & "#" Next a Next i frmConnection.wnsdata.SendData "base#" & SendString |
1 2 3 4 5 6 7 8 | Public Enum eBuildingType ebtHeadquarters = 0 ebtTaxOffice = 1 End enum 'De nummers mogen weggelaten worden (de '=' moet dan ook weg) Public BuildingType as eBuildingType Public X as integer Public Y as integer |
1 | Public InBase as Collection |
1 2 | +Sub Init+ Set InBase = new Collection |
1 2 3 4 5 6 7 8 9 | +Function GiveBuildings+ dim b as clsBuilding, s as string s = "#" for each b in InBase s = cstr(b.BuildingType) & "#" & cstr(b.X) & "#" & cstr(b.Y) & "#" next 'Hier kunt u nu doen wat u wilt; ik doe even debug.print s. debug.print s |
1 | AddRecord "INSERT INTO worldinfo (worldstring) VALUES ('" & convertstring & "')" & "WHERE username = '" & tempUsername & "'" |
Echter, dit is gewoon een iets aangepaste query die al werkte..quote:Er ontbreekt een puntkomma (;) aan het einde van de SQL instructie
Volgens mij moet er ook nog iets met het Set command gebeuren in mijn code. Ik ben nog een beetje aan het inlezen over objects, maar elke hulp is meegenomen.quote:Op donderdag 28 juli 2005 11:49 schreef JanMichiel het volgende:
[..]
1. Reference
2. Module:
[ code verwijderd ]
3. Sub:
[ code verwijderd ]
Correct? Ik dacht dat ik dit al geprobeerd had (zonder veel succes), maar zal het straks nog eens proberen.
Is het overigens noodzakelijk om de reference (object?) in een module te declareren? Of kan dat ook gewoon in een form?
De functie addrecord doet:quote:Op donderdag 28 juli 2005 15:54 schreef Xsysstar het volgende:
Hmm, dat lijkt SQL. Ik weet niet hoe de functie AddRecord werkt, maar ik denk dat de oplossing wel weet: achteraan het commando (vóór het laatste aanhalingsteken: AddRecord "Commando(Hier)" ) moet u de puntkomma plaatsen.
Als dit inderdaad niet werkt, misschien moet u een spatie plaatsen tussen het aanhalingsteken en WHERE in het deel [& "WHERE username =].
1 2 3 4 5 | Public Sub AddRecord(query) Dim AdoRec As ADODB.Recordset Set AdoRec = AdoCon.Execute(query) Set AdoRec = Nothing End Sub |
Dat Set = nothing is overbodig; VB doet dat zelf.quote:Op donderdag 28 juli 2005 16:27 schreef LeeHarveyOswald het volgende:
[..]
De functie addrecord doet:
[ code verwijderd ]
Dat met die puntkomma neerzetten heb ik geprobeerd, werkte helaas niet
Zou kunnen; max 255 tekens ofzo?quote:Op donderdag 28 juli 2005 16:30 schreef LeeHarveyOswald het volgende:
Spatie was het ook niet.. zou het kunnen dat de query die ik doorgeef, te lang is?
In LeeHarveyOswalds code kunt u zien hoe het met Dim en Set werkt. Kijkt u anders eens op Google of http://www.vbgroup.nl/Default.aspx?tabid=41. Er zijn vast wel minicursi te vinden.quote:Op donderdag 28 juli 2005 16:27 schreef JanMichiel het volgende:
Ik krijg bij het uitvoeren error code #91. Je kan het wel nalezen in de VB help index waarschijnlijk. Het helpdocument spreekt voor het gebruik van een object over het declareren van het object (gedaan) en het Set command. Maar ik heb momenteel te weinig kennis van objects om te weten het het Set command te gebruiken.
Wat op dat moment in mn variabele staat klopt volgens mij wel, nl:quote:Op donderdag 28 juli 2005 16:30 schreef Xsysstar het volgende:
[..]
Dat Set = nothing is overbodig; VB doet dat zelf.
Het probleem zal hem wel in adocon liggen. Goede RecordType ofzo (Unknown, Table, enz, Command) gekozen?
Probeer anders eens een debug.print van de Query; misschien ziet u het dan ineens.
De heer des huizes kwam even langs en zei dat het aan de hekjes zou kunnen liggen. Volgens mij moet je voor het hekje, de bijbehorende HTML-code gebruiken (bijv.). Natuurlijk kunt u ook gewoon een ander teken gebruiken (of een gewone letter).quote:Op donderdag 28 juli 2005 16:42 schreef LeeHarveyOswald het volgende:
[..]
Wat op dat moment in mn variabele staat klopt volgens mij wel, nl:
INSERT INTO worldinfo (worldstring) VALUES ('base#0#0#0#0#<knip>0#0#') WHERE username = 'Jeroen'
1 | Public Const sSep as string = "&" |
quote:Op donderdag 28 juli 2005 17:06 schreef Xsysstar het volgende:
Nee, dat maakt niet uit. Het gaat erom dat u waarschijnlijk een teken gebruikt dat niet wordt toegestaan. Probeert u eens het En-teken & i.p.v. het hekje.
Tip! Defineer in uw hoofdmodule (elk programma zou er één moeten hebben; meestal modMain genoemd) een constante voor dat scheidingsteken:
[ code verwijderd ]
Als u overal waar u nu het hekje gebruikt verwijst naar sSep, is er minder kans op typfouten en kunt u sneller veranderingen doorvoeren.
P.S. Ik ben benieuwd naar waarvoor dit alles dient. Wat voor soort spel moet het worden? En wat is al klaar? Ik heb namelijk zelf wel eens wat geprobeerd, maar als ik dan naga hoeveel er gebeuren moet, ben ik vrij snel genezen.
http://www.pestforum.nl/webwar.exequote:Op donderdag 28 juli 2005 20:02 schreef Xsysstar het volgende:
Laat je't me weten wanneer die weer open gaat? Dank alvast.
Ik weet waarom het niet werkte. Je was New vergeten.quote:Op donderdag 28 juli 2005 16:24 schreef Xsysstar het volgende:
Ik heb niet zoëven iets gezien in uw code waar een Set commando gebruikt moet worden maar mocht u ergens met zitten (te twijfelen), dan zegt u het maar.
1 | Dim FSO As New FileSystemObject |
1 2 | Dim FSO As FileSystemObject Set FSO = New FileSystemObject |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | Function GetAllFiles(ByVal path As String, ByVal filespec As String, _ Optional RecurseDirs As Boolean) As Collection Dim spec As Variant Dim file As Variant Dim subdir As Variant Dim subdirs As New Collection Dim specs() As String ' initialize the result Set GetAllFiles = New Collection ' ensure that path has a trailing backslash If Right$(path, 1) <> "\" Then path = path & "\" ' get the list of provided file specifications specs() = Split(filespec, ";") ' this is necessary to ignore duplicates in result ' caused by overlapping file specifications On Error Resume Next ' at each iteration search for a different filespec For Each spec In specs ' start the search file = Dir$(path & spec) Do While Len(file) ' we've found a new file file = path & file GetAllFiles.Add file, file ' get ready for the next iteration file = Dir$ Loop Next ' first, build the list of subdirectories to be searched If RecurseDirs Then ' get the collection of subdirectories ' start the search file = Dir$(path & "*.*", vbDirectory) Do While Len(file) ' we've found a new directory If file = "." Or file = ".." Then ' exclude the "." and ".." entries ElseIf (GetAttr(path & file) And vbDirectory) = 0 Then ' ignore regular files Else ' this is a directory, include the path in the collection file = path & file subdirs.Add file, file End If ' get next directory file = Dir$ Loop ' parse each subdirectory For Each subdir In subdirs ' use GetAllFiles recursively For Each file In GetAllFiles(subdir, filespec, True) GetAllFiles.Add file, file Next Next End If End Function |
1 | set test = GetAllFiles("c:\etcetcetcpath", "*.*", true) |
Hehe, nietsquote:Op maandag 1 augustus 2005 15:12 schreef Chandler het volgende:
Ik heb de volgende functie (sub)
[ code verwijderd ]
nu kan ik deze functie uitlezen door
[ code verwijderd ]
maar wat kan ik dan doen met test?
1 2 | set File = new clsFile '(dit=deze regel moet ook even direct na de definitie van File geplaatst worden!) File.path = dir$ |
Ja, dat is Foks probleem, hoorquote:Op maandag 1 augustus 2005 15:36 schreef EggsTC het volgende:
Ook gelijk bedankt voor de layout fuck
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | Public Sub process() Dim xxx As String Set test = readTree(projForm.fromDir.path, _ projForm.settingEXTvalue.Text, _ xxx) End Sub Public Function readTree(ByVal path As String, ByVal extensions As String, ByVal fbase As String) FileName = Dir(path & extensions) Do While FileName <> "" filenames.Add path & FileName FileName = Dir Loop End Function |
Ik geloof het niet want dan moet er op twee plekken in het geheugen gekeken worden (voor teken 10 en voor 13) terwijl vbNewline al gedefineerd is als 10 en 13 tezamen.quote:Op dinsdag 2 augustus 2005 13:56 schreef EggsTC het volgende:
chr$(10) & chr$(13) is nog sneller toch?
+ dat het opslaan vanuit rtf kinderlijk eenvoudig is: rtftxt.savefile "C:\mijnbestand.doc"quote:Op dinsdag 2 augustus 2005 13:50 schreef Xsysstar het volgende:
txtLog.selstart = len(txtlog.text)
O, vbNewline blijkt sneller te zijn dan vbCrLf; scheelt honderdsten van milliseconden, maar ach: ik zeg het toch maar even.
P.S. Ik zou een RTF box willen aanraden, want volgens mij heeft die geen grens van hoe lang de tekst mag zijn terwijl alle textboxen iets meer dan 35000 tekens mogen bevatten.
In sommige situaties zijn variants wel zinvol. Je kan er nl flexibele code mee schrijven, voorbeeldje:quote:Het is een variant; varianten zijn eigenlijk rotzooi, 't kan alles zijn. Niet beledigend bedoeld, maar dit is zéér slecht geprogrammeerd: varianten moet men -eigenlijk altijd- zien te vermijden: ze zijn traag, slurpen geheugen en het programma kan er vrij weinig mee.
1 2 3 4 5 6 7 8 9 | function Convert(var as variant) as integer Select case vartype(var) case vbInteger 'conversie code voor integers case vbString 'conversie code voor strings case vbDouble 'conversie code voor doubles end function |
Strings kun je wel opslaan in een collection, geloof ik. Ik maak meestal gebruik van array's ipv collectionsquote:Ik weet niet zeker of Collections, 'strings' kunnen bevatten.
Ik denk dat je je vraag beter kan stellen op:quote:Op woensdag 3 augustus 2005 13:53 schreef EggsTC het volgende:
niemand?
Edit :
Alle termtypes werken wel op telnet, dus daar zou t ook neit aan liggen,.. zoals VT100, VT52 etc.
ASCII tekens 1 - 20 (geloof ik) zijn besturingstekens en kunnen dus worden verwerkt als iets anders dan gewoon een letter. Bijvoorbeeld nummer 10 en 13 (Enter).quote:Op woensdag 3 augustus 2005 22:16 schreef EggsTC het volgende:
Geen idee waarom.. maar heb het step by step zitten bekijken en die indata zitten parsen totdat ik erachter kwam
Je kunt de Split() functie gebruiken om de verschillende velden in een array op te slaan. Daarna kun je de velden gemakkelik opslaan in de database.quote:Op donderdag 4 augustus 2005 13:01 schreef JanMichiel het volgende:
Nog iets waar ik niet uitkom, deze is een beetje moeilijker.
De input is data in een RichTextBox. De data heeft het volgende formaat:
Mon Nov 8 05:01:18 2004, 30747408, 30742991, ABC, DEF, 10000, 1.29435, 0.0000 , 0.00
Mon Nov 8 05:01:41 2004, 30747434, , GHI, JKL, 10000, 1.29520, 1000.1393 , 0.00
Mon Nov 8 05:01:50 2004, 30747450, 30742991, MNO, PQR, 10000, 1.29520, 1000.1393 , 501.35
Mon Nov 8 05:02:24 2004, 30747741, , STU, VWX, 500, 1.29520, 0.0000 , 501.35
etc, etc.
Items zijn gescheiden door een comma. Waarschijnlijk moet de input lijn voor lijn worden uitgelezen en items achter een comma in een nieuw veld worden geplaatst. De tabel met juiste velden is reeds gecreeerd, maar hoe krijg ik de verschillende items in de aparte cellen?
Private Sub UpdateData()
Dim dbAccountData As Database
Dim rsAccountUpdate As Recordset
Set dbAccountData = OpenDatabase("AccountData.mdb")
Set rsAccountUpdate = dbAccountData.OpenRecordset("AccountX")
...
...
End Sub
1 2 3 4 5 6 | dim sRows() as string, sArr() as string, l as long sRows = split(rtfJeTextBox,vbnewline) for l = 0 to ubound(sRows) sArr = split(sRows(l),", ") 'Wat je verder per regel wilt doen = verwerken sArr... next l |
quote:Op maandag 8 augustus 2005 10:31 schreef Chandler het volgende:
Vraagje; is er ook een groot IRC kanaal voor VB programmeurs?zou leuk zijn
Het enige wat je kan doen is op zoek gaan naar windows API'squote:Op zondag 14 augustus 2005 15:24 schreef Burbo het volgende:
Ik ben zelf een programmatje aan het schrijven in VB6, maar nu zoek ik een manier om mijn CPU-temperatuur en Case-temperatuur uit te lezen. Ik heb wel wat gelezen over performance counters, maar daar kan ik me verder weinig wijs uit maken. Hetzelfde geldt voor het uitlezen van het geluid, ik wil kunnen zien hoe sterk het geluid is wat naar mn boxen gaat, omdat ik een VU-meter wil gaan maken. Weet iemand hoe ik dit het beste aan kan pakken?
API's daar heb ik geen ervaring mee, dus ik weet niet of dat gaat lukken. Weet je wel een oplossing voor het geluid?quote:Op zondag 14 augustus 2005 15:42 schreef whosvegas het volgende:
[..]
Het enige wat je kan doen is op zoek gaan naar windows API's
Of vraag het eens in het Dev forum op tweakers.net
Met geluid heb ik geen ervaringquote:Op zondag 14 augustus 2005 16:44 schreef Burbo het volgende:
[..]
API's daar heb ik geen ervaring mee, dus ik weet niet of dat gaat lukken. Weet je wel een oplossing voor het geluid?
Misschien wel de moeite waard idd, maar ik denk dat er toch wel een makkelijkere manier moet zijn om ergens het geluidniveau vandaan te halenquote:Op zondag 14 augustus 2005 19:08 schreef whosvegas het volgende:
[..]
Met geluid heb ik geen ervaring
Misschien is het zinvol om je eerst in Windows API programmeren te verdiepen. Met API calls kun je vanuit VB programma's veel meer doen dan dat je alleen de VB library's gebruikt. En zo moeilijk is het allemaal ook weer niet. Afhankelijk van je ervaring denk ik dat je met een paar avondjes studeren een heel eind komt.
Ziet er goed uit, maar bij bijna alle programma's krijg ik "couldn't get wavein\waveout", dat blijkt dus een soort van geluidskaartprobleem te zijn, ik denk dat ik dus nog op zoek moet gaan naar wat andersquote:Op zondag 14 augustus 2005 19:17 schreef whosvegas het volgende:
Misschien heb je hier iets aan:
http://www.planet-source-(...)?lngWId=1#categories
Er is ook een sectie Sound/MP3
Ik bedoel het meer algemeen. Als je verder wilt met programmeren zou ik me er zeker in gaan verdiepen. Hierdoor krijg je een beter inzicht in hoe een win32 programma werkt.quote:Op zondag 14 augustus 2005 19:18 schreef Burbo het volgende:
[..]
Misschien wel de moeite waard idd, maar ik denk dat er toch wel een makkelijkere manier moet zijn om ergens het geluidniveau vandaan te halen![]()
Dank je voor de top, waarschijnlijk zal ik dat wel enigszins doen dan binnenkortquote:Op zondag 14 augustus 2005 22:44 schreef whosvegas het volgende:
[..]
Ik bedoel het meer algemeen. Als je verder wilt met programmeren zou ik me er zeker in gaan verdiepen. Hierdoor krijg je een beter inzicht in hoe een win32 programma werkt.
|
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |