Menukaart

Status
Niet open voor verdere reacties.
@Kerkrade: Bij deze het verzoek de "Bericht aanpassen"-knop te gebruiken wanneer je nog een toevoeging aan een verhaal hebt.

Het zorgt er voor dat de vraag overzichtelijk blijft.

Alvast bedankt,

Stefan (Tha Devil)
Moderator Helpmij.nl
 
Hoe kan ik het zo maken dat het inderdaad zo is dat als ik een gerecht toevoeg/verwijder dat het wordt opgeslagen (in een database of iets dergelijks)? Het liefst uitleg en waarin het opgeslagen kan worden. Helemaal super zou natuurlijk de code zijn. Nu weet ik ook dat ik eigenlijk het hele programma hier gevraagd heb maar ik wil ervaring opdoen met grote projecten zoals deze. Als ik klaar ben met dit project kan iemand anders me (gratis) kleine projecten toewijzen of ideeën om zelf programma's te maken waardoor ik meer ervaring met Visual Basic 2010 krijg. Zelf ideeën is goed, maar site's mag ook. Laat wat van jullie horen.
 
Het hangt er helemaal vanaf hoe jij het wilt opslaan voor de uiteindelijke code.... Ik vind databases persoonlijk niet zo prettig omdat de gebruiker er iets voor moet installeren en ik heb er nooit echt veel mee gewerkt, dus het is iedere keer weer uitzoeken hoe het ook al weer moest...

Maar ik geloof dat ik ook al wat andere suggesties had gedaan: XML en INI bestanden...
Je kan natuurlijk ook zelf iets bedenken om het op te slaan, of je slaat het op in een textbestand met punt-komma's (";") ertussen. Dat kan je dan ook weer uitlezen...

Denk er even over na hoe jij had bedacht om het op te slaan.

MartinJM


PS: Idee om te maken, maar wel moeilijk (veel moeilijker dan het klinkt): Een programma wat in een kleine picturebox laat zien welke kleur er onder je muis zit....
 
Laatst bewerkt:
Zoals ik het lees is een textbestand het makkelijkst of zie ik dat verkeerd?
 
Hoeft niet... Je kan ook de INI gebruiken... Die kan je namelijk ook gewoon als een textbestand uitlezen.

Ook als je het op die manier wilt doen, kan je de naam van het bestand bijvoorbeeld "gerechten.gerechten" noemen. Dan kan je dat bestand daarna alsnog als een gewoon textbestand uitlezen...


Voor mij zou het waarschijnlijk wel het makkelijkst zijn omdat ik daar het meeste ervaring in heb, maar daardoor hoef jij je niet te laten beïnvloeden.

Het nadeel ervan is dat iedereen het kan bekijken met bv kladblok.... Het is dus ook geen veilige manier om data op te slaan.. Maar ook bv XML bestanden kan je tegenwoordig al bekijken met Internet Explorer dus ook dat is niet veilig...


Uiteindelijk is het jouw keuze. Als jij kiest voor textbestanden, dan worden het textbextanden. Als jij kiest voor XML, dan wordt het XML. Als jij kiest voor databases, dan worden het databases. Enz...


MartinJM
 
Zou jij me dan een goede nederlandse tutorial kunnen geven over INI-bestanden maken.

Maar is het dan ook mogelijk dat een programma zo'n INI-bestand aan kan passen?
 
Helaas is het zo dat als jouw programma dat kan, dat alle programma's dat kunnen (bij mijn weten)... Wel kan je ervoor zorgen dat alles wat je erin zet niet leesbaar is voor het menselijk brein en andere programma's, maar wel voor jouw programma. Dat je het dus eerst codeert voordat je het erin zet. Maar dat lijkt mij voor dit programma eigenlijk onnodig moeilijk en overbodig.

Een nederlandse link voor INI bestanden: http://www.helpmij.nl/forum/showthread.php/633161-Configuratiebestanden-VB-NET

Vaak zijn er meer en betere engelse tutorials op internet te vinden, maar persoonlijk vond ik deze wel ok.


Waarschijnlijk is het niet zo dat alles wat je nodig hebt in die tutorial/code staat, maar daarbij kan ik je verder wel helpen...


MartinJM
 
Maar hier staat toch niet in hoe je het moet doen? Zou je misschien zelf ene willen schrijven of een goed filmpje kunnen opzoeken hierover. Want dit gaat me boven de pet.
 
Nou, er staat wel vermeld hoe je INI-bestanden kunt uitlezen.
Heb je het voorbeeldproject gezien dat erbij is geleverd? Misschien dat dat je helpt. :)

- Waar gaat het precies mis?
 
Stap 1:

Voeg als eerst deze class toe:

Code:
Public Class IniFile
    ' API functions
    Private Declare Ansi Function GetPrivateProfileString _
      Lib "kernel32.dll" Alias "GetPrivateProfileStringA" _
      (ByVal lpApplicationName As String, _
      ByVal lpKeyName As String, ByVal lpDefault As String, _
      ByVal lpReturnedString As System.Text.StringBuilder, _
      ByVal nSize As Integer, ByVal lpFileName As String) _
      As Integer
    Private Declare Ansi Function WritePrivateProfileString _
      Lib "kernel32.dll" Alias "WritePrivateProfileStringA" _
      (ByVal lpApplicationName As String, _
      ByVal lpKeyName As String, ByVal lpString As String, _
      ByVal lpFileName As String) As Integer
    Private Declare Ansi Function GetPrivateProfileInt _
      Lib "kernel32.dll" Alias "GetPrivateProfileIntA" _
      (ByVal lpApplicationName As String, _
      ByVal lpKeyName As String, ByVal nDefault As Integer, _
      ByVal lpFileName As String) As Integer
    Private Declare Ansi Function FlushPrivateProfileString _
      Lib "kernel32.dll" Alias "WritePrivateProfileStringA" _
      (ByVal lpApplicationName As Integer, _
      ByVal lpKeyName As Integer, ByVal lpString As Integer, _
      ByVal lpFileName As String) As Integer
    Dim strFilename As String

    ' Constructor, accepting a filename
    Public Sub New(ByVal Filename As String)
        strFilename = Filename
    End Sub

    ' Read-only filename property
    ReadOnly Property FileName() As String
        Get
            Return strFilename
        End Get
    End Property

    Public Function GetString(ByVal Section As String, _
      ByVal Key As String, ByVal [Default] As String) As String
        ' Returns a string from your INI file
        Dim intCharCount As Integer
        Dim objResult As New System.Text.StringBuilder(256)
        intCharCount = GetPrivateProfileString(Section, Key, _
           [Default], objResult, objResult.Capacity, strFilename)
        If intCharCount > 0 Then GetString = _
           Left(objResult.ToString, intCharCount)
    End Function

    Public Function GetInteger(ByVal Section As String, _
      ByVal Key As String, ByVal [Default] As Integer) As Integer
        ' Returns an integer from your INI file
        Return GetPrivateProfileInt(Section, Key, _
           [Default], strFilename)
    End Function

    Public Function GetBoolean(ByVal Section As String, _
      ByVal Key As String, ByVal [Default] As Boolean) As Boolean
        ' Returns a boolean from your INI file
        Return (GetPrivateProfileInt(Section, Key, _
           CInt([Default]), strFilename) = 1)
    End Function

    Public Sub WriteString(ByVal Section As String, _
      ByVal Key As String, ByVal Value As String)
        ' Writes a string to your INI file
        WritePrivateProfileString(Section, Key, Value, strFilename)
        Flush()
    End Sub

    Public Sub WriteInteger(ByVal Section As String, _
      ByVal Key As String, ByVal Value As Integer)
        ' Writes an integer to your INI file
        WriteString(Section, Key, CStr(Value))
        Flush()
    End Sub

    Public Sub WriteBoolean(ByVal Section As String, _
      ByVal Key As String, ByVal Value As Boolean)
        ' Writes a boolean to your INI file
        WriteString(Section, Key, CStr(CInt(Value)))
        Flush()
    End Sub

    Private Sub Flush()
        ' Stores all the cached changes to your INI file
        FlushPrivateProfileString(0, 0, 0, strFilename)
    End Sub

End Class


Voor alle duidelijkheid: Deze class heb ik niet zelf geschreven. Ik heb hem van internet gehaald.

Begin bij stap 1. Deze code hoef je niet te snappen. Ik heb zelf ook nog nooit geprobeerd deze code te snappen...


Op zich zou je alles hetzelfde kunnen doen als bij textbestanden, maar het toevoegen van dingen vind ik op deze manier toch wel heel erg makkelijk, daarom dacht ik dat dit wel eens een oplossing zou zijn voor jou.

Verder moet je dan nog gewoon alle stappen volgen...

MartinJM

[edit]@Joz: Leuke spreuk in je handtekening :)

En omdat de namen van de gerechten kunnen verschillen is dit toch niet altijd de makkelijkste manier om het uit te lezen, of heb je daar misschien ook nog een trucje voor?[/edit]
 
Laatst bewerkt:
@Joz: Leuke spreuk in je handtekening :)
Bedankt :D

En omdat de namen van de gerechten kunnen verschillen is dit toch niet altijd de makkelijkste manier om het uit te lezen, of heb je daar misschien ook nog een trucje voor?
Dit volg ik niet helemaal. Het is toch de bedoeling dat er gerechten in verschillende categorieën kunnen worden ingedeeld. Bijvoorbeeld:

Code:
[Voorgerecht]
1=Kippensoep;1.00
2=Groentensoep;1.00

[Hoofdgerecht]
1=Patatje speciaal;1.00
2=Patatje met;1.00

[Nagerecht]
1=IJs;1.00
2=Nog meer ijs;1.00

Dan kun je door de categorie loopen totdat de waarde niets is. :)
 
Laatst bewerkt:
Dan kun je door de categorie loopen totdat de waarde niets is. :)

Dat bedoelde ik, hoe kan dat dan makkelijk?? Ik heb het wel eens gedaan met streamreader enz. Maar is daar niet ook een trucje voor?


En onthoud ook dat de prijzen ook opgeslagen moeten worden.....

MartinJM
 
Om maar even 100 posts terug te gaan:

Je zou om te beginnen ook een XML file kunnen gebruiken voor je producten, of zelfs gewoon een tekstbestand.

bv:
Code:
.txt

1;Coca Cola;1,75
2;Koffie;1,35
3;Uitsmijter;3,75
4;Salade;2,25

.xml

<artikelen>
	<artikel id="1" name="Coca Cola" price="1,75" />
	<artikel id="2" name="Koffie" price="1,35" />
	<artikel id="3" name="Uitsmijter" price="3,75" />
	<artikel id="4" name="Salade" price="2,25" />
</artikelen>
Je kunt google gebruiken om te kijken hoe je de gegevens eruit haalt en in je programma gebruikt.
Hetzelfde voor obers. (al zou je een wachtwoord niet zomaar in een bestand bewaren)
(System.IO is voor bestand te lezen/schrijven en zo, het WWW staat vol met voorbeelden hierover)

Het eerste wat je zou kunnen doen is een Product class maken, als je nog niet weet wat classes zijn stel ik voor eerst eens wat tutorials te lezen/bekijken (zelfs youtube heeft enkele goede tutorials)

(k zou xml boven ini kiezen)
 
Laatst bewerkt:
Ik zal even een voorbeeldje maken.
Zoals Bloodshed al suggereert, zijn er meerdere wegen die naar Rome leiden, maar de INI vind ik toch een vrij makkelijke weg ;)

(k zou xml boven ini kiezen)
Because?
 
Ik vind het een stuk makkelijker om mee te werken en met attributes details aangeven per node.

bv zo iets zou ik niet graag in een INI of txt zetten
Code:
<waiters>
  <waiter id="1" name="Bob" isManager="false" authenticated="true">
    <authentication username="bob" password="2g3ds45gfy"/>
  </waiter>
  <waiter id="2" name="John" isManager="true" authenticated="true">
    <authentication username="john" password="xurc9y43r"/>
  </waiter>
  <waiter id="3" name="Sara" isManager="false" authenticated="true">
    <authentication username="sara" password="xu32r8y4bt45"/>
  </waiter>
  <waiter id="4" name="Betty" isManager="false" authenticated="false">
    <authentication username="betty" password="3428r87f"/>
  </waiter>
</waiters>

Ook is dit fijn als export bestand te gebruiken aangezien het eenvoudig te maken is en zeer goed is in te lezen door verschillende programma´s, browsers etc
 
Klopt, ben het eens over jouw voorbeeld. Maar voor zoiets als dit vind ik INI's toch makkelijker.
Bovendien zou de TS dan ook nog eens XML moeten gaan leren ;)
 
Hoe maak je een INI-bestand nu? Dus niet de link naar dat Forum maar het INI-bestand zelf. Ten 2e klopt in mijn ogen de code niet:
[CPP]Public Function GetString(ByVal Section As String, _
ByVal Key As String, ByVal [Default] As String) As String
' Returns a string from your INI file
Dim intCharCount As Integer
Dim objResult As New System.Text.StringBuilder(256)
intCharCount = GetPrivateProfileString(Section, Key, _
[Default], objResult, objResult.Capacity, strFilename)
If intCharCount > 0 Then GetString = _
Left(objResult.ToString, intCharCount)
End Function[/CPP]

Error = Function 'GetString' doesn't return a value on all code paths. A null reference exception could occur at run time when the result is used.
 
Laatst bewerkt:
Zoals ik al zei ben ik een voorbeeld aan het maken, even geduld a.u.b. ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan