Vraag & Antwoord

Programmeren

[Delphi] Bestand Schrijven in timer

9 antwoorden
  • Hey, Is het erg als ik middel TIniFile elke 10e seconde een bestand open, lees en sluit? De data veranderd niet, dus het maakt niet uit of ik het maar 1× uitlees en in een varabele zet, maar is dit nodig? Of wordt dit al gedaan? Danku!
  • Wat noem je 'erg' ? Volgens mij gaat het je wel flink wat wachttijd kosten zodat je het niet of nauwelijks 10 keer per seconde dat bestand geopend en gesloten krijgt (openen & sluiten kost tijd, je bent erg afhankelijk van de pc in kwestie of het lukt). Is er een reden waarom je het op die manier wilt doen ? ie : is er een ander programma dat die ini-file 10x per seconde gaat wijzigen ? Is het daardoor wel zinvol om 10x per seconde datzelfde bestand te openen ? Wat mij verstandiger lijkt is om het bestand pas (weer) te openen als je zeker weet dat er iets gewijzigd is. Je vraagt dan (zodra je het bestand voor jezelf kunt openen) eerst de file-info op en haalt daar het tijdstip uit waarop het gewijzigd is. Als dat verschilt van je laatste poging dan heeft het zin om het weer opnieuw in te lezen ...
  • Ik ben zoals altijd weer eens lui. Ik ga een draadloze afstandbediening maken, deze kijkt elke 100 ms ofn er op een knop is gedrukt en wijzigt aan de hand daarvan een grafisch display. In diezelfde timer wordt een ini-bestandje geopent, ook al weet ik dat er eigenlijk nooit iets veranderd. De gedachte was juist, als het ergens in een buffer wordt opgeslagen hoef ik het zelf niet te bufferen. M'n pc heeft het er ook niet moeilijk mee. Toch maar veranderen?
  • Het bestand dat je in een object van TInifile-klasse zet wordt al vanzelf gewijzigd. Je hebt (behalve bij Win9x) geen extra aanroep nodig. Pas als je andere programma's hebt die hetzelfde ini-bestand willen lezen/wijzigen hoef je het bestand opnieuw in te lezen. Dus dat kan makkelijk buiten die lus om. Btw : ik neem aan dat je dus niet gewoon met events kunt werken bij je toetsen ? Want een leesprocedure die iedere 100ms gedaan moet worden klinkt als veel werk voor iets dat mogelijk al vanzelf kan ...
  • [quote:e63c6c96e7="MichielPH"]Ik ben zoals altijd weer eens lui. Ik ga een draadloze afstandbediening maken, deze kijkt elke 100 ms ofn er op een knop is gedrukt en wijzigt aan de hand daarvan een grafisch display. In diezelfde timer wordt een ini-bestandje geopent, ook al weet ik dat er eigenlijk nooit iets veranderd. De gedachte was juist, als het ergens in een buffer wordt opgeslagen hoef ik het zelf niet te bufferen. M'n pc heeft het er ook niet moeilijk mee. Toch maar veranderen?[/quote:e63c6c96e7] Hoewel de interne Windows cache hier gaat ingrijpen, zou ik dit toch maar even veranderen. Het heeft een nadelig effect op de performance als je dit niet aangepast. Ook al zat dit misschien niet direct merkbaar zijn. Je moet gewoon eenmalig bij het opstarten van je programma ofzo de instellingen laden en bij het sluiten van je applicatie en/of wijzigen van de instellingen de instellingen opslaan.
  • Als er niet veranderd is to de vorige keer is het toch niet nodig om in je ini file te kijken, die waarden uit die inifile kun je toch in variabelen schrijven, en alleen als er iets wijzigd dit ook naar de inifile schrijven. Of begrijp ik het verhaal nou helemaal verkeerd Peter
  • @JaFO: Een INI-bestand openen, lezen en sluiten gaat zat in 100ms. Ik neem hierbij aan dat je INI-file geen vele megabytes groot is. TS zegt dat het bestand niet veranderd, dus hoef je het ook niet steeds te openen en te lezen. Wanneer je ReadString() van TIniFile aanroept, wordt er uit het bestand gelezen. Dit moet je voorkomen omdat het zinloos is. Gebruik daarom TMemIniFile, deze leest eerst alles in, en als je ReadString aanroept leest hij dit uit het geheugen. Maak eens een stress-test en zie de verschillen. Succes.
  • [color=red:2d2cd63132] spam verwijdert, nu nog ff deze meneer zijn account RW[/color:2d2cd63132]
  • Ik zeg ook niet dat het niet binnen die tijd kan, maar dat je wel te (erg) afhankelijk bent van het systeem, de locatie en het bestand in kwestie. Die TMemoryInifile is inderdaad de betere keuze als je iets meer snelheid wilt. Ik was dat type ff vergeten, maar ik gebruik het zelf ook in m'n progsels :)

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.