Toon posts:

[C#] Variabelen opslaan voor meerdere sessies

Pagina: 1
Acties:

Verwijderd

Topicstarter
Het zit zo dat ik in C# een programma heb geschreven die van een productie met behulp van een flink aantal variabelen (productomschrijving) de verschillende kostencategorieen en de uiteindelijke verkoopprijs, al dan niet met transport kan berekenen.

Dit was niet zo lastig en werkt perfect.

Nu leek het me handig om bepaalde variabelen, die niet vaak veranderen, maar ook zeker niet statisch zijn, als extern "instellingen" bestand op te slaan.

Het leek me het handigste (geen idee waarom) om dit met een xml bestandje te doen. Een flink aantal tutorials heb ik doorgelezen over Datasets, datatables, etc. De meesten gaan echter van een SQL database uit. Het lukt me sowieso ook niet om variablen naar een xml weg te schrijven. Ik krijg dan namelijk een fout met "object references" die niet aanwezig zijn.

Wie kan mij hier wat uitleg over geven? De MSDN biedt geen uitkomst.

Of is er een makkelijkere manier om (ongeveer 5) variabelen op te slaan in een extern bestand?

  • Daspeed
  • Registratie: Maart 2001
  • Laatst online: 19:03
Zoek eens op App.Config en AppSettings. Dan vind je denk ik wel wat :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Ook niet makkelijk om hier iets zinnigs op te zeggen, als je geen duidelijk voorbeeld ofzo geeft. Wat lukt er nu precies niet ? Naar een bestand wegschrijven ?
Aan je omschrijving van de fout te lezen, denk ik dat je gewoon geen geheugen voor een bepaald object of objecten gealloceerd hebt.

Echter, waarom kies je er niet voor om die parameters in je Application of Cache weg te schrijven, als ze een eerste keer opgehaald worden.
Als je applicatie afsluit, dan moet je ze natuurlijk wel weer persisten mocht je dat willen. (Naar een file, of naar een DB).

https://fgheysels.github.io/


  • Cloud
  • Registratie: November 2001
  • Laatst online: 03-11 10:25

Cloud

FP ProMod

Ex-moderatie mobster

Serialization zou ook een oplossing kunnen zijn. Er zijn eigenlijk heel veel manieren om dit op te lossen, maar m.i. komt het neer op opslag naar een bestand toe.
Over XML en C# is genoeg te vinden via google :)

Never attribute to malice that which can be adequately explained by stupidity. - Robert J. Hanlon
60% of the time, it works all the time. - Brian Fantana


  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 13-12-2024
Waarom zoiets zwaars als serialization?

Het gaat gewoon over globale al dan niet geparametrizeerde variablen.
En daar zijn genoeg opties voor in .NET.

app.config (web.config bij ASP.NET), Settings file in .NET 2.0,
of gewoon contanten.

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


Verwijderd

Topicstarter
Ik heb de code en de precieze foutmelding nu niet bij de hand, deze zal ik later posten.

Het punt is dat bijvoorbeeld de kostprijs van een bepaalde grondstof niet zo vaak verandert, bijvoorbeeld maar 1x in de twee maanden. Het is dus makkelijker om via een "Opties" form toe te voegen, waar de prijs van o.a. deze grondstof opgegeven kan worden. Deze dient opgeslagen te worden in een extern bestand. Wanneer nodig, kan de prijs worden aangepast en opgeslagen.

Het moet zijn om dit bestand op een netwerkshare te zetten zodat het centraal geupdate kan worden voor alle verkopers, of per mail verzonden kunnen worden.

Voordat ik verder ga: Is het sowieso handig om dit met xml te doen?

  • Cloud
  • Registratie: November 2001
  • Laatst online: 03-11 10:25

Cloud

FP ProMod

Ex-moderatie mobster

4of9 schreef op woensdag 20 december 2006 @ 15:00:
Waarom zoiets zwaars als serialization?

Het gaat gewoon over globale al dan niet geparametrizeerde variablen.
En daar zijn genoeg opties voor in .NET.
Het is niet dé oplossing, het is een van de oplossingen. :) Ik heb geen idee om wat voor hoeveelheid gegevens het gaat, of het om eigen klassen gaat, en wat dan ook. Er zijn echt veel oplossingen voor dit probleem, dus waarom niet verschillende voorstellen? Ik had natuurlijk ook app.config voor kunnen stellen, maar dan herhaal ik de rest alleen maar.

Nog een oplossing? INI files?

Zoals whoami ook al stelt is de TS te vaag over de exacte situatie en bedoeling.
Verwijderd schreef op woensdag 20 december 2006 @ 15:05:
Voordat ik verder ga: Is het sowieso handig om dit met xml te doen?
Als ik je goed begrijp, is XML voor jouw situatie inderdaad een nette oplossing :) Maar wat gaat er nu mis bij het wegschrijven naar XML? En hoe heb je het aangepakt?

[ Voor 19% gewijzigd door Cloud op 20-12-2006 15:11 ]

Never attribute to malice that which can be adequately explained by stupidity. - Robert J. Hanlon
60% of the time, it works all the time. - Brian Fantana


Verwijderd

Topicstarter
wolkje schreef op woensdag 20 december 2006 @ 15:09:
[...]

Het is niet dé oplossing, het is een van de oplossingen. :) Ik heb geen idee om wat voor hoeveelheid gegevens het gaat, of het om eigen klassen gaat, en wat dan ook. Er zijn echt veel oplossingen voor dit probleem, dus waarom niet verschillende voorstellen? Ik had natuurlijk ook app.config voor kunnen stellen, maar dan herhaal ik de rest alleen maar.

Nog een oplossing? INI files?

Zoals whoami ook al stelt is de TS te vaag over de exacte situatie en bedoeling.
Het gaat slechts om een kleine hoeveelheid gegevens die momenteel nog elke keer handmatig ingetypt moeten worden d.m.v. een textbox. Ik hoop dat ik in mijn laatste post hier boven iets duidelijker ben geweest.

Wat ik wil is:
decimal decGrondstofX = <lees waarde uit een file>;

En ik wil:
decimal decGrondstofX = 120,56;
<schrijf decGrondstofX naar een file>;

Nu heb ik:
decimal decGrondstofX = Convert.ToDecimal(txtGrondtofX.Text);

  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Je kan het in een xml file zetten, die xml laad je in in een XmlDocument. Dat XmlDocument stop je in je Cache, en je creeërt een Cache dependency die ervoor zorgt dat het xml document opnieuw ingelezen wordt als het veranderd.
(Eventueel kan je een wrapper class rond dat xml document bouwen, waarmee je dan simpel via properties de juiste waarde kunt gaan uitlezen).
Ik had natuurlijk ook app.config voor kunnen stellen, maar dan herhaal ik de rest alleen maar.
Die gegevens in de app.config (of eerder de web.config in dit geval) zetten, heeft wel als gevolg dat de web applicatie herstart wordt als je iets in de web.config file aanpast. Wellicht wil je dat niet.

[ Voor 11% gewijzigd door whoami op 20-12-2006 15:18 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op woensdag 20 december 2006 @ 15:17:
Je kan het in een xml file zetten, die xml laad je in in een XmlDocument. Dat XmlDocument stop je in je Cache, en je creeërt een Cache dependency die ervoor zorgt dat het xml document opnieuw ingelezen wordt als het veranderd.
(Eventueel kan je een wrapper class rond dat xml document bouwen, waarmee je dan simpel via properties de juiste waarde kunt gaan uitlezen).


[...]

Die gegevens in de app.config (of eerder de web.config in dit geval) zetten, heeft wel als gevolg dat de web applicatie herstart wordt als je iets in de web.config file aanpast. Wellicht wil je dat niet.
Misschien was ik er niet helemaal duidelijk over, maar het gaat hier om een Windows .exe, niet om een web-applicatie.

  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Hmm, ok dan. :D
Echter, zowiezo vind ik het (conceptueel gezien) geen goed idee om configuratie-parameters die te maken hebben met het probleem-domein in de app.config te stoppen.

https://fgheysels.github.io/


  • Cloud
  • Registratie: November 2001
  • Laatst online: 03-11 10:25

Cloud

FP ProMod

Ex-moderatie mobster

Verwijderd schreef op woensdag 20 december 2006 @ 15:17:
Het gaat slechts om een kleine hoeveelheid gegevens die momenteel nog elke keer handmatig ingetypt moeten worden d.m.v. een textbox. Ik hoop dat ik in mijn laatste post hier boven iets duidelijker ben geweest.
Oké het is me nu duidelijk wat je wilt. En XML is daar inderdaad een mooie oplossing voor, maar wat is nu het probleem? Je zegt 'object references' maar waar gebeurd dat? Laat eens een stukje code zien met de plek waar het fout gaat, en vertel wat je geprobeerd hebt :)
whoami schreef op woensdag 20 december 2006 @ 15:30:
Echter, zowiezo vind ik het (conceptueel gezien) geen goed idee om configuratie-parameters die te maken hebben met het probleem-domein in de app.config te stoppen.
/me eensch is

Never attribute to malice that which can be adequately explained by stupidity. - Robert J. Hanlon
60% of the time, it works all the time. - Brian Fantana

Pagina: 1