abonnement Unibet Coolblue Bitvavo
  woensdag 27 juli 2005 @ 14:17:47 #1
123792 JanMichiel
Melk, de witte motor!
pi_29169942
Voor alle Visual Basic 6 vragen.

Is Dir de beste methode om te checken of een bestand aanwezig is in de folder en zo niet het bestand aan te maken? Ik heb het volgende gemaakt (voor het bestand 'data.mdb'):

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
pi_29170595
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

[ Bericht 36% gewijzigd door Xsysstar op 27-07-2005 14:40:36 (Aanvulling) ]
pi_29170665
ha, ik heb ook een mooie vraag

ik heb (VBA, overigens) een input boxje waar je een dir in kan vullen.

Met
1ChDir (directory.Value)
switch ik naar de ingevulde directory, echter, dit houdt geen rekening met eventuele schijfwisseling... Weet iemand hoe ik dit beter kan doen?
Trotse poster van het 37000000ste bericht ^O^
pi_29170702
quote:
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?
Met ChDrive .
  woensdag 27 juli 2005 @ 15:08:11 #5
123792 JanMichiel
Melk, de witte motor!
pi_29171442
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
Ok, bedankt voor de uitleg. Ik zal het straks proberen als ik op de andere computer zit.
pi_29172012
quote:
Op woensdag 27 juli 2005 14:42 schreef Xsysstar het volgende:

[..]

Met ChDrive .
Ja maar doe eens mooi functietje ofzo

En hoe dit dat met netwerk directory's? ( //share/bla )
Trotse poster van het 37000000ste bericht ^O^
pi_29172496
quote:
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 )
Nou, het mooie functietje :
1
2
ChDrive myDir
ChDir myDir


Netwerk kan niet; helaas .
  donderdag 28 juli 2005 @ 11:40:53 #8
123792 JanMichiel
Melk, de witte motor!
pi_29196366
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
Het wil nog niet helemaal lukken, ik heb het volgende gedaan.

Een reference geplaatst naar Microsoft Scripting Runtime.
Een module gemaakt met de volgende code:

1
2
3
Public FSO As FileSystemObject
Dim bExists As Boolean
bExists = FSO.FileExists("data.mdb")


En dan de variabele bExists in een sub testen, bijvoorbeeld:

1
2
3
4
Private Sub Form_Load()
If bExists = False Then
...
...


Wanneer ik de code wil uitvoeren (F5) geeft Visual Basic op het "data.mdb" gedeelte de foutmelding: Invalid Outside Procedure. Wat doe ik nu verkeerd?
pi_29196418
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.
  donderdag 28 juli 2005 @ 11:49:59 #10
123792 JanMichiel
Melk, de witte motor!
pi_29196605
quote:
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. Reference
2. Module:

1Public FSO As FileSystemObject


3. Sub:

1
2
3
4
5
6
Private Sub Form_Load()
Dim bExists As Boolean
bExists = FSO.FileExists("data.mdb")
If bExists = False Then
...
...


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?
pi_29196940
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?
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.

Een FileSystemObject is onveranderlijk en hetzelfde object kan dus door het hele programma door gebruikt worden. Indien u veel met dit object wil doen, kan het handig zijn het object eenmalig in een module (Public) te declareren. Mocht u het maar nodig hebben in één sub of functie, dan kan het gewoon in de desbetreffende sub of functie gedeclareerd worden (Dim).
pi_29201349
Ik ben een online game aan het maken, werkt opzich al redelijk loop tegen iets kleins aan:

Bij het versturen van de info van de wereld (welke gebouwtjes er gebouwd zijn) maak ik 1 lange regel die op de server in een database wordt gezet. Deze regel is alsvolgt opgebouwd:

base#(insert X coordinaat hier)#(insert Y coordinaat hier)#(welk nr. gebouw hier)#(insert X coordinaat hier)#(insert Y coordinaat hier)#(welk nr. gebouw hier)# etc etc.

Nu staan die gegevens in het programma in inbase(500,500)

Ik wil dat de gegevens op de server up2date blijven. Dus ik verstuur bij het bouwen van een gebouw die info over. Probleem daarbij is om de X en de Y gegevens, en het bijhorende gebouw in 1 regel te krijgen. Ik doe dat als volgt:

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



Maar daar wordt mn spelletje ERG traag van

(lees: Hij bevriest voor een minuut of 5). En dat komt uiteraard de gameplay niet ten goede


Dus beste medemensjes, hoe dit op te lossen?
pi_29201755
U kunt het beste klassen gebruiken. Indien u niet gewerkt hebt met klassen en verzamelingen (collecties), zegt u het dan even? Dan leg ik het wat verder uit.

[Class: clsBuilding]
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


[Module]
1Public InBase as Collection

In deze module:
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
pi_29201973
De gebouwen zijn ook genummerd 0 voor huis, 2 voor barracks etc etc.

Dit gebeurt in een aparte module..

Alleen je For-next lus snap ik niet echt, en Collection? (het gaat om een (Veels te groot, ik ga hem ook verkleinen) veld van 500x500 gebouwtjes, dus 250 000 gebouwtjes)
pi_29202531
Het nummeren van sóórten gebouwen doe ik met Enum (dat is gewoon een lijst met cijfers die een naampje krijgen).

Mocht dat niet genoeg zijn (dat zal snel het geval zijn), dan kunt u in plaats van een Enum, wéér een andere klasse maken (bijv. clsBuildingType) en nóg collection (bijv. Public Buildingtypes as Collection) in een module. In elk zo'n klasse (clsBuildingType) kunt u eigenschappen van het desbetreffende gebouw opgeven (BuildingName, DeltaStonePerTurn, BuildCostStone, enz).

+++
Ja, in de for-lus staat foutje; 'k zag het net
moet zijn: s = s & ....
("cstr" wordt gebruikt om integers e.d. om te zetten in een string.)

Met deze functie worden nu gewoon alle gebouwen uit de collectie gepakt en hun gegevens (x,y, type) achter elkaar geplakt.

Collections:
Een collection kan (i.t.t. een array) Objecten bevatten, elk met een unieke Key. Alle Toolbars (toolbar.buttons), Listviews (listview.listitem), treeviews (treeview.nodes) hebben een (of meerdere) collectie(s) waarin objecten (werkbalkknop, listviewpictogram, treeviewvertakking) geplaatst worden. Zelfgemaakte objecten (=klassen) kunt u hier ook in plaatsen.

Dat is wat ik hier ook heb gedaan:
Public colCollection as collection 'Collectie defineren=geheugenplaats vrijmaken

Sub init
set colCollection = new collection 'Setten=geheugenplaats vullen met een nieuwe collectie (want u zou ook een kopie van een bestaande collectie kunnen maken (set colCollection = colOld)
'Aangezien een collectie ook een object is, moet het geset worden; alle objecten die u in de programmacode maakt en wilt gebruiken, moeten geset worden.

dim c as clsNieuweKlasse 'Geheugenplaats vrijmaken
set c = new clsNieuweKlasse 'Nieuwe maken

debug.print "In de klasse zitten " & c.count & " objecten." 'Geen=0 objecten
colCollection.add tb, "Nieuwe klasse" 'Hiermee wordt "c" aan de collectie toegevoegd met de sleutel "Nieuwe klasse".
debug.print "In de klasse zit " & c.count & "object" 'Eén object.

If colCollection(1) is colCollection("Nieuwe klasse") then debug.print "Men kan een object in een collectie op twee manieren aanroepen: als getal (index) of als naam (key)"
if colCollection(1) is c then debug.print "Object 'c' is inderdaad gelijk aan colCollection(1)
end sub

Let u wel op dat bij een vergelijking (if-statement) objecten altijd met "is" (en niet =) worden vergeleken. Het setten van objecten gaat wel gewoon met het =-teken, maar i.t.t. strings en integers moet er dan het commando "set" voor, zoals u hebt kunnen zien.

Hopelijk is het duidelijk .
pi_29204311
Jup thnx overigens het probleem wel al op een andere manier opgelost: Simpelweg de maps kleiner maken. 250.000 gebouwtjes was wat te veel van het goede Nu gaat het overdragen snel genoeg. Echter, de volgende opdracht (Die een query uit laat voeren) geeft een foutmelding:

1AddRecord "INSERT INTO worldinfo (worldstring) VALUES ('" & convertstring & "')" & "WHERE username = '" & tempUsername & "'"
quote:
Er ontbreekt een puntkomma (;) aan het einde van de SQL instructie
Echter, dit is gewoon een iets aangepaste query die al werkte..
pi_29204470
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 =].
  donderdag 28 juli 2005 @ 16:22:38 #18
123792 JanMichiel
Melk, de witte motor!
pi_29205327
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?
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.
pi_29205370
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 .
pi_29205435
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 =].
De functie addrecord doet:

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 met die puntkomma neerzetten heb ik geprobeerd, werkte helaas niet
  donderdag 28 juli 2005 @ 16:27:37 #21
123792 JanMichiel
Melk, de witte motor!
pi_29205445
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.
pi_29205525
Spatie was het ook niet.. zou het kunnen dat de query die ik doorgeef, te lang is?
pi_29205532
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
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.
pi_29205546
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?
Zou kunnen; max 255 tekens ofzo?
pi_29205588
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.
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.
pi_29205829
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.
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'
pi_29206293
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'
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).
pi_29206363
hmmm maar dan zou er dus een aparte VB code moeten zijn voor een hekje?
pi_29206510
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:
1Public Const sSep as string = "&"

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 .
pi_29206585
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 .
kent u het online spel nukezone? Zoiets maar dan iets grafischer...
pi_29206624
Ik ga even alle #jes zowel in de server als in de client vervangen met en tekens, daarna zet ik de exec. wel even online
pi_29206675
zelfde foutmelding met & ipv. #
pi_29206773
Jammer; ik zal zo eens kijken naar nukezone. Eerst even wat nuttigen . afk tot 6:30 (hooguit)
pi_29206889
Smakelijk
pi_29208691
Dank en daar ben ik weer. Ik heb even gekeken op http://www.nukezone.info/, aannemende dat het over het spel gaat waarnaar u verwees. Jammer dat er geen screenshots zijn.

Kent u trouwens DarkGalaxy? Ook al is er nu een beta, (is het offline) voor versie 5 en valt er vrij weinig te doen (www.darkgalaxy.com), als u van ruimte strategie (vooral strategie) spellen houdt, met allianties en veroveringscampagnes voeren dan kan dat best een leuk spel zijn.
pi_29209159
Ik bedoelde http://www.nukezone.nu/

Dat is een text based spel. Mijn spel is niet tekstbased: er is wel een Grafisch gebeuren, maar voor de rest lijkt het er wel op..
pi_29209237
Ja, ik klikte op Manual en toen kwam ik op de .info-site. Ik ben bang dat ik me niet ga aanmelden (ik ben even uit het ontdekken van nieuwe spellen), maar ik ben wel benieuwd naar de eerste build van uw grafische versie.
Succes alvast .
pi_29209967
http://pestforum.nl/webwar.exe

Het uitvoeren van die query, waar hij dus op vast loopt, heb ik even uitgeschakeld. Server die standaard genoemd wordt ist, zelf even een user maken en aanmelden
pi_29210050
Hmm, ik ben bang dat het pestforum gepest wordt door de "De pagina kan niet worden weergegeven"-foutmelding....
pi_29211267
jup.. server down
pi_29211323
Laat je't me weten wanneer die weer open gaat? Dank alvast .
pi_29211556
quote:
Op donderdag 28 juli 2005 20:02 schreef Xsysstar het volgende:
Laat je't me weten wanneer die weer open gaat? Dank alvast .
http://www.pestforum.nl/webwar.exe

Server is 62.251.120.197

Edit: Server is weer online.

[ Bericht 12% gewijzigd door LeeHarveyOswald op 28-07-2005 20:18:12 ]
pi_29211648
Uhm... Lycos doet wat moeilijk .

Stuur het anders naar -----@-------; per MSN (=idem) mag ook.

[ Bericht 11% gewijzigd door Xsysstar op 28-07-2005 20:19:22 ]
pi_29211895
Ik zie dat het inloggen gelukt is ik kan evt. ook wat gebouwtjes handmatig in de database prakken, om te laten zien dat het uitlezen wel werkt
pi_29211975
Hehe; doe rustig aan. Ontwikkeling haasten is zelden goed .
  vrijdag 29 juli 2005 @ 15:42:55 #46
123792 JanMichiel
Melk, de witte motor!
pi_29237150
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 .
Ik weet waarom het niet werkte. Je was New vergeten.

Er zijn twee opties.

1:
1Dim FSO As New FileSystemObject


2:
1
2
Dim FSO As FileSystemObject
Set FSO = New FileSystemObject
pi_29237862
Ach ja, natuurlijk. Onbewust weggelaten, waarschijnlijk vanzelfsprekendheid .
Laatste is sneller, veel sneller. Indien u een Publieke definitie wilt maken (Public FSO as FileSystemObject; in de header, zoals ik deed), kunt u het beste in de Form_Initialize (of Class_Initialize, enz) het Set-commando gebruiken. In modulen bestaat er niet zo'n voorgemaakte sub "Initialize", dus die moet u zelf even maken.
pi_29320149
Weet iemand hoe je kan werken met een collection?

ik heb een functie gevonden waarmee ik een tree kan uitlezen maar nu wil ik weten hoe ik de gegereneerde collection kan benutten..

iemand een idee

Tnx
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_29320218
Ik zou graag willen helpen, maar ik weet niet echt wat u bedoelt.

Als u het treeview control bedoelt, de "Nodes" eigenschap is al een collection, dus hoeft niet apart uitgelezen te worden in een nieuwe collection.
pi_29325044
Ik heb de volgende functie (sub)

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


nu kan ik deze functie uitlezen door

1set test = GetAllFiles("c:\etcetcetcpath", "*.*", true)


maar wat kan ik dan doen met test?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_29325265
Als ik het zo snel doorlees kan je directories listen..
Lambo of Rekt
pi_29325463
quote:
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?
Hehe, niets . 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.

Ik weet niet zeker of Collections, 'strings' kunnen bevatten. Waarschijnlijk blijkbaar niet, anders zou deze programmeur geen variant hebben gebruikt.

Als ik u zou zijn, zou ik óf het FileSystemObject gebruiken, zoals in een eerdere reactie uitgelegd, óf een Klasse maken (bv. clsFile met i.i.g. de Publieke eigenschap Path). In plaats van "File as variant" te defineren, defineert u het nu "as clsFile". Vergeet niet:
1) Altijd File.Path te lezen en te vullen. Dus zoals in deze functie staat "File = bla..." moet worden "File.Path = bla...".
2) Het object in deze functie hergebruiken moet even wat anders: niet zomaar File = dir$, maar:
1
2
set File = new clsFile '(dit=deze regel moet ook even direct na de definitie van File geplaatst worden!)
File.path = dir$


Als terugwaarde van de Functie hebt u dan een Collectie, gevuld (of niet natuurlijk) met clsFile objecten, wiens bestandspad u kunt uitlezen met de Path-eigenschap van elk zo'n object.

Maar dit is maar één van de vele oplossingen .
pi_29325758
Ook gelijk bedankt voor de layout fuck
Lambo of Rekt
pi_29325812
quote:
Op maandag 1 augustus 2005 15:36 schreef EggsTC het volgende:
Ook gelijk bedankt voor de layout fuck
Ja, dat is Foks probleem, hoor . Moeten ze maar een stijl kiezen die de volle ruimte van het venster benut.
pi_29329013
Het is dus om het even in het kort uit te leggen de bedoeling om een tree uit te lezen, ik dacht dat een functie daarvoor best handig zou zijn.

Ik ga zelf eens een functie proberen te maken...
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_29329269
Een functie is prima handig .

U bedoelt een repeterende functie die mappen in een treeview plaatst en oneindig diep kan gaan?

Dan zult u een functie moeten schrijven die bestaat uit:
1) Een parameter byval "Path as string"
In de functie
2) De inhoud van de map "Path" doornemen met zo'n zelfde While-lus als in de vorige broncode en dan bij elke iteratie van een map dezelfde functie nóg eens aanroepen, maar dan met als Path, de map van de betreffende iteratie.

Als dit niet werkt, zou het wel moeten lukken door éérst een aparte collectie met die mappen te maken (dus in de lus, niet weer de functie aanroepen, maar toevoegen aan een collection) en nadat de lus klaar is, voor elk onderdeel uit de collectie nog eens de functie aanroepen.
pi_29330187
Ik heb nu het volgende geprobeerd; maar krijg steeds een error

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


waar ga ik de mist in? ik ben niet zo'n VBer heb ik al wel door
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_29331547
- U moet kiezen wat je terug wil hebben van de functie Readtree; dit doet men door achter de haakjes van de functie 'as (type)' te plaatsen (zonder apostroffen).
- U moet Test "dimmen" (=defineren) as hetzelfde type als in de zin hierboven.
- U moet Filenames eerst dimmen als collectie en dan "Set Filesnames = new collection"; daarna pas de rest van de function ReadTree
- U moet ergens in de functie ReadTree bepalen wat u terug wilt hebben ("ReadTree = bla" óf "Set ReadTree = bla" als het om een object gaat).
- Wat wilt u met fBase doen?

't Is moeilijk zo even uit te leggen (ik moet zo ook nog eens weg), maar als ik u was, zou ik eens kijken op www.planet-source-code.com of een dergelijke stek; daar zijn veel programma's met broncode and tips te vinden.

VB is lastig in het begin; zeker de opgave die u uzelf oplegt, vergt wat meer ervaring en denkwerk dan waar de gemiddelde beginner mee begint .

Ik zou zeggen: probeer eens een tekstverwerker. In VB 6 zit een application wizard. Kies daaruit "MDI" en u krijgt een basis tekstverweker voorgeschoteld. Probeer die eens uit te breiden (behalve vet, cursief en onderstreept kan bijv. ook nog doorhaald=strikethrough, kleuren, objecten invoegen, sub-/superscript). Daar had ik veel van geleerd . Maar al met al doet u het prima .
pi_29350531
Ik ben meer van de winsock kant
Lambo of Rekt
  dinsdag 2 augustus 2005 @ 13:00:18 #60
123792 JanMichiel
Melk, de witte motor!
pi_29355769
Ik heb er nog eentje. Ik gebruik een textbox als activity log. Voor het toevoegen van een nieuwe entry plak ik de content achter de bestaande content.

txtLog.text = txtLog.text & "Een nieuwe entry voor het log" & vbCrLf

Wanneer de tekstbox volzit zijn nieuwe items echter niet meer zichtbaar wanneer ze worden toegevoegd. Hoe zorg ik dat de laatste items zichtbaar blijven en de bovenste items wegvallen?

mmh, ik realiseer met net dat ik het ook andersom kan programmeren, nieuwe items bovenaan toevoegen. Maar het anderwoord op deze vraag zou wel handig zijn
pi_29357332
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.
pi_29357552
chr$(10) & chr$(13) is nog sneller toch?
Lambo of Rekt
  dinsdag 2 augustus 2005 @ 14:16:03 #63
123792 JanMichiel
Melk, de witte motor!
pi_29358214
Waar staat RTF voor?
pi_29358429
quote:
Op dinsdag 2 augustus 2005 13:56 schreef EggsTC het volgende:
chr$(10) & chr$(13) is nog sneller toch?
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.

Ik heb ook maar ergens gelezen dat vbNewline het snelst is, samen met andere tips zoals altijd de $-varianten van commando's gebruiken wanneer mogelijk (mid$ i.p.v. mid, enz).

===
RTF staat voor Rich Text Format; een tekstopmaakformaat. MS heeft een control gemaakt dat dit formaat ondersteunt. Met RTF kan men tekst een kleurtje geven, vetdrukken, enz; net als Word en andere beter-dan-Kladblok-tekstverwerkers.
pi_29358719
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.
+ dat het opslaan vanuit rtf kinderlijk eenvoudig is: rtftxt.savefile "C:\mijnbestand.doc"
  dinsdag 2 augustus 2005 @ 23:00:16 #66
52513 whosvegas
The Trickster
pi_29374985
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.
In sommige situaties zijn variants wel zinvol. Je kan er nl flexibele code mee schrijven, voorbeeldje:
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

Dus je kan een functie schrijven om verschillende typen variabelen af te handelen.
quote:
Ik weet niet zeker of Collections, 'strings' kunnen bevatten.
Strings kun je wel opslaan in een collection, geloof ik. Ik maak meestal gebruik van array's ipv collections
Are you nuts??
pi_29384346
Ik probeer een telnet applicatie na te bootsen met VB6.

Nu heb ik dus een simpel dingetje gemaakt met winsock en een output window. Winsock connect op de speedtouch 510 router naar port 23.. krijg wat onzin terug, en daarna mooi een wachtwoordje in mn outputwindow. Commando's zenden naar de router werkt ook ok, gewoon met senddata text1.text.

Dit is getest op een speedtouch 510 en een Siemens5830 router. Op beide routers krijg ik wat onzin (blokjes, vage tekens) terug maar ook normale tekst zoals "Username : ". Dit werkt dus voor de rest OK.

Probleem is wanneer ik een VoDSL router benader(de RAD's LA-110) dan krijg ik alleen maar onzin terug, zonder normale tekst. Eigelijk alleen blokjes en sterretjes en ascii figuurtjes. Kan het zijn dat het een encryptie is die op die router zit? Want als ik 'gewoon' telnet ernaartoe dan krijg ik wel een PASSWORD prompt... iemand enig idee?
Lambo of Rekt
pi_29390598
niemand?

Edit :

Alle termtypes werken wel op telnet, dus daar zou t ook neit aan liggen,.. zoals VT100, VT52 etc.

[ Bericht 43% gewijzigd door EggsTC op 03-08-2005 14:08:20 ]
Lambo of Rekt
pi_29402220
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.
Ik denk dat je je vraag beter kan stellen op:
gathering.tweakers.net

Want je stelt wel een hele specifieke vraag, imand moet net toevallig met hetzelfde bezig zijn.
Are you nuts??
pi_29407117
Ben er al achter, als je een char 1 terug krijgt met een winsock.. sla m over bij het invoegen van je textbox.. keyascii 1 zorgde ervoor dat ik de helft van mn werkelijke indata maar terug kreeg in mn textbox. dont ask.

Geen idee waarom.. maar heb het step by step zitten bekijken en die indata zitten parsen totdat ik erachter kwam
Lambo of Rekt
pi_29420137
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
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).

P.S. Ik was er gisteren niet, spijt me dat ik toen niet kon antwoorden .
  donderdag 4 augustus 2005 @ 13:01:59 #72
123792 JanMichiel
Melk, de witte motor!
pi_29421838
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
pi_29421953
Volgens mij kon dat dmv:
rsAccountUpdate!Veldnaam = Veldwaarde
(Dus i.p.v. een punt, een uitroepteken).

Verder zou ik willen aanraden het databaseobject algemeen te defineren (modulair; buiten deze specifieke sub), want dat maakt het programma sneller omdat de database maar eenmalig geladen hoeft te worden.

P.S. Ik weet niet superveel van databases .
  donderdag 4 augustus 2005 @ 13:24:23 #74
123792 JanMichiel
Melk, de witte motor!
pi_29422139
Ik heb de database in een module gedefineerd, dit was enkel voor de duidelijkheid van het voorbeeld . Ik snap echter niet helemaal hoe ik de Veldwaarde uit de string moet trekken, gewoon de comma opzoeken met InStr() en dit elk veld in aparte variabelen plaatsen? Of kan dat beter op een andere manier?

En hoe kan ik de input lijn voor lijn behandelen? Is er een bepaalde manier om via een Loop elke keer met de volgende regel van de input te werken?
pi_29422771
-Dubbel0
pi_29422780
Lijn voor lijn inlezen:
dim lFile as long: lfile = freefile
dim sInput as string, sArr as string
Open Bestand for input as lfile
while not eof(lfile) 'Zolang niet einde van bestand
line input lfile, sinput
sarr = split(sinput,",")
wend
close lfile

[ Bericht 0% gewijzigd door Xsysstar op 04-08-2005 14:09:59 (Klein Foutje :)) ]
  donderdag 4 augustus 2005 @ 14:07:26 #77
123792 JanMichiel
Melk, de witte motor!
pi_29422806
ok, ik zal het proberen Thanks.
pi_29426047
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
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.
Are you nuts??
  vrijdag 5 augustus 2005 @ 14:28:04 #79
123792 JanMichiel
Melk, de witte motor!
pi_29444475
Bedankt, het werkt perfect. Nu alleen nog wat checks toevoegen tegen corrupte data. Wat voor Type zou jij eigenlijk toewijzen aan de database velden (help geeft aan dat een Type toewijzen optional is, maar wanneer het programma draait geeft windows een foutmelding wanneer geen Type is toegewezen)?

Aangezien je sArr als sting defineerde neem ik aan dat je alles dbText (of een ander tekst type) zou maken. Is het echter niet beter om een nummer bijvoorbeeld dbLong als Type toe te wijzen, of geeft een dbText nummer geen probleem met latere verwerking?

Kan een variabele ook naar #1 worden geopend - met een andere functie misschien? Ik kreeg het enkel voor elkaar met een file on disk.
pi_29449285
Types databasevelden? Nou, in de database moet men per veld gewoon opgeven wat voor info daarin komt: string (tekenreeks), integer (getal), long (lang getal), enz. Anders zou ik niet weten wat je bedoelt.

sArr is een string array, omdat deze alle tekens kan bevatten (want een getal kan natuurlijk geen letters bevatten). De inhoud van deze array moet verwerkt worden:
strNaam = sArr(0)
intHuisnummer = cint(val(sArr(1))) 'CInt kan in dit geval overbodig zijn, maar dat weet ik even niet zeker

Dus afhankelijk van wát dat ene Array Item voor gegevens bevat moet deze mogelijk omgezet worden van String (namelijk de Array) naar bijv. een Integer (namelijk de variabele waar de info moet komen). Dit kan met de CCommando's (CInt, CLng, CDbl, CDate).

De CCommando's geven een fout als "de brongegevens" corrupt zijn (= meestal: bevatten letters); daarom moet men altijd (= wanneer mogelijk) het CCommando loslaten op Val(Brongegevens) i.p.v. gewoon "Brongegevens". Het Val-commando geeft namelijk indien mogelijk een Double terug ("143 e" > 143; als het goed is) en anders 0 (i.p.v. een foutmelding).

Je kunt dus het beste de databaseveldtypes opgeven zoals ze moeten zijn: integer voor huisnummers, string voor straat, enz. Bij het inlezen moet dan alleen het een en ander worden omgezet.
==
Stom van me: 'k las het niet goed. Dat "Open" commando is voor bestanden. Als je een gewone String lijn-voor-lijn wilt verwerken, gescheiden door vbNewline (=enters), dan kan dat als volgt:

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
pi_29455138
xsysstar, heb nog een leuke vraag aan je, kan je een MSN adden? tis nl niet 1 vraag. Tis een vrij complexe situatie Zie profiel.
Lambo of Rekt
pi_29500269
Vraagje; is er ook een groot IRC kanaal voor VB programmeurs? zou leuk zijn
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_29505967
Zou er vast wel zijn, maar ik hou niet zo van IRC .
pi_29516049
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


Beter maken we er zo 1 zelf, voor FOK!-VBers ofzo
Lambo of Rekt
pi_29528021
Ik houd ook niet zo van IRC maar vragen beantwoorden gaat meestal sneller..

Ps iemand een idee voor het volgende!:

Wanneer mijn progie meerdere bestanden upload (of 1 grote) en ik klik ff op een ander progie en keer dan terug, dan wordt pas mijn window ververst na dat de actie geklaard is... hoe kan ik zorgen dat ook onder een actie mijn x etc buttons klikbaar blijven?

Snappie?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_29614760
DoEvents in de lus plaatsen .
pi_29629652
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?
pi_29629789
Niet in VB ben ik bang; tenminste: ik weet niet hoe VB zo diep in het systeem kan graven. Er zijn wel Windows-APIs om rechtstreeks het geheugen uit te lezen en te schrijven door een geheugenadres op te geven, maar daar wil je niet aan beginnen . En ik betwijfel of die temperatuur in het geheugen staat. Helaas, ik kan niet helpen.

Ik denk eigenlijk zelfs dat je idee niet zomaar lukt, want waarschijnlijk zal elk moederbord zijn eigen manier van opslaan van die informatie hebben (immers: elke moederbordfabrikant heeft (meestal) zijn eigen hulpprogrammaatjes, zoals Asus Probe om de temperatuur mee bij te houden).
  zondag 14 augustus 2005 @ 15:42:09 #89
52513 whosvegas
The Trickster
pi_29630183
quote:
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?
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
Are you nuts??
pi_29632041
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
API's daar heb ik geen ervaring mee, dus ik weet niet of dat gaat lukken. Weet je wel een oplossing voor het geluid?
  zondag 14 augustus 2005 @ 19:08:29 #91
52513 whosvegas
The Trickster
pi_29635808
quote:
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?
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.
Are you nuts??
  zondag 14 augustus 2005 @ 19:17:04 #92
52513 whosvegas
The Trickster
pi_29636003
Misschien heb je hier iets aan:
http://www.planet-source-(...)?lngWId=1#categories

Er is ook een sectie Sound/MP3
Are you nuts??
pi_29636034
quote:
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.
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
pi_29637523
quote:
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
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 anders
  zondag 14 augustus 2005 @ 22:44:03 #95
52513 whosvegas
The Trickster
pi_29641904
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
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.
Are you nuts??
pi_29642123
quote:
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.
Dank je voor de top, waarschijnlijk zal ik dat wel enigszins doen dan binnenkort
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')