[C] configuratie file gebruiken

Pagina: 1
Acties:

  • Da Weef
  • Registratie: Januari 2004
  • Laatst online: 04-05 11:40
Hoi,

Ik ben een (hoofd)programma aan het schrijven in C dat zijn belangrijkste data moet halen uit een configuratie file. De configuraties kunnen veranderd worden door een ander (setup)programma te runnen, dat vervolgens de (aangepaste) configuraties opslaat in een (tekst)bestand.
De data is echter zo relevant ik ik ze het liefst als globals wil hebben binnen het (hoofd)programma. Nu heb ik nog als enige oplossing om de data steeds opnieuw in te lezen met bijv. fread, maar er moet toch ook een manier zijn om er globals van te maken.

Wat zie ik over het hoofd? |:(

.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
:?
Lees je bestand in en plaats de waardes in je globals? Maak er een functie van die dat doet? Hang die functie desnoods aan een windows eventje als het bestand wijzigt? Iets in deze richting ? (<- Is dan wel .Net maar je begrijpt wat ik bedoel)
Ik snap er geen hout van (of het is zo voor de hand liggend...) dus kun je wat duidelijker zijn?

[ Voor 29% gewijzigd door RobIII op 25-05-2005 17:14 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je ziet niets over het hoofd, dat kan gewoon niet op een standaard manier :). Globale variabelen zijn niets meer dan wat ruimte in de executable, op die manier zou je je data dus daar wel in kunnen zetten. Je setup programma zal dan de executable moeten modificeren zodat bij het opstarten de data direct uit het geheugen geladen kan worden. Maar zoals gezegd, dit is niet standaard, het hangt nogal af van de manier waarop je executable in elkaar zit (wat op elk platform weer anders kan zijn).

Ik zou gewoon blijven bij je manier van file inlezen, zo werkt vrijwel elk programma. Je zou wel, om het proces wat te versnellen, je data binair kunnen lezen en schrijven zodat er geen conversieslag nodig is van binaire data naar een textuele representatie en andersom. Maar dit is slechts interessant als je heel erg veel data heel vaak in moet lezen, gewoon een .ini-achtig bestandje parsen is prima voor het gros van de applicaties.

[ Voor 33% gewijzigd door .oisyn op 25-05-2005 17:16 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 06-05 18:51

Creepy

Tactical Espionage Splatterer

Eeeh?? Die data wordt in een ANDER programma aangepast? Dan zul je toch echt die file weer opnieuw in moeten lezen.
Anders maak je een stuk shared memory aan in je main prog waarin de andere progjes rechtstreeks kunnen schrijven...

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Creepy schreef op woensdag 25 mei 2005 @ 17:15:
Eeeh?? Die data wordt in een ANDER programma aangepast? Dan zul je toch echt die file weer opnieuw in moeten lezen.
Anders maak je een stuk shared memory aan in je main prog waarin de andere progjes rechtstreeks kunnen schrijven...
offtopic:
Of maak een messagequeue die op poort 1337 over TCP connect en stuur daar een 3DES-encrypted XML stream over heen :P

[ Voor 5% gewijzigd door RobIII op 25-05-2005 17:17 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Da Weef
  • Registratie: Januari 2004
  • Laatst online: 04-05 11:40
Ik had inderdaad wat over het hoofd gezien...

Rob maakt een goed punt, ik kan gewoon de waardes inlezen met fread en vervolgens in globals plaatsen om verder te gebruiken...

OOOOOPS, maar bedankt in ieder geval!

.


  • The End
  • Registratie: Maart 2000
  • Laatst online: 16:41

The End

!Beginning

.oisyn schreef op woensdag 25 mei 2005 @ 17:13:
Je ziet niets over het hoofd, dat kan gewoon niet op een standaard manier :). Globale variabelen zijn niets meer dan wat ruimte in de executable, op die manier zou je je data dus daar wel in kunnen zetten. Je setup programma zal dan de executable moeten modificeren zodat bij het opstarten de data direct uit het geheugen geladen kan worden. Maar zoals gezegd, dit is niet standaard, het hangt nogal af van de manier waarop je executable in elkaar zit (wat op elk platform weer anders kan zijn).

[knip]
Wat?? Je kan globale variabelen toch gewoon runtime aanpassen... Waarom moet je de executable daarvoor gaan editen?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13:45

.oisyn

Moderator Devschuur®

Demotivational Speaker

Misschien begrijp ik het verkeerd, maar is het niet de bedoeling dat die data persistent is (hence de configuratiefile)? Zo begreep ik z'n post namelijk, anders kan ie idd beter een pipe, socket of shared mem gebruiken

.edit: nu ik de reacties doorlees lijkt het nog erger, namelijk dat elke keer dat de data nodig is in hetzelfde proces de file opnieuw wordt uitgelezen. Tja, da's natuurlijk stom :P

[ Voor 59% gewijzigd door .oisyn op 25-05-2005 17:28 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Da Weef
  • Registratie: Januari 2004
  • Laatst online: 04-05 11:40
.oisyn schreef op woensdag 25 mei 2005 @ 17:26:
Misschien begrijp ik het verkeerd, maar is het niet de bedoeling dat die data persistent is (hence de configuratiefile)? Zo begreep ik z'n post namelijk, anders kan ie idd beter een pipe, socket of shared mem gebruiken

.edit: nu ik de reacties doorlees lijkt het nog erger, namelijk dat elke keer dat de data nodig is in hetzelfde proces de file opnieuw wordt uitgelezen. Tja, da's natuurlijk stom :P
Ja, je hoeft niet meteen te gaan schelden hoor ;) Ik was er zelf ook al achter dat dat niet snugger was, dus vandaar mijn vraag. De oplossing hoefde ook niet echt lastig te zijn, ik was gewoon een beetje op zo aan het eind van de dag...

Maar in ieder geval bedankt allen!

.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-05 14:03

curry684

left part of the evil twins

Creepy schreef op woensdag 25 mei 2005 @ 17:15:
Eeeh?? Die data wordt in een ANDER programma aangepast? Dan zul je toch echt die file weer opnieuw in moeten lezen.
Anders maak je een stuk shared memory aan in je main prog waarin de andere progjes rechtstreeks kunnen schrijven...
Of een messagewindow, of DDE, of TCP/IP, of named pipes, of anonymous pipes, of COM, of clipboard, of mailslots, of RPC, of een custom IPC mechanisme.... ;)

Professionele website nodig?

Pagina: 1