 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 18.03.2014, 20:18 Titel: |
|
|
Eternal_pain hat Folgendes geschrieben: | Wieso baust du dir deine Datei nicht nach einem festen Schema auf? |
nemored hat Folgendes geschrieben: | Statt Datum- und Zeit-Strings würde ich außerdem eher Serial Numbers verwenden - sparen eine Mange Platz, und wenn dann jeder Datensatz exakt 4+8 Byte groß ist (wobei 1+8 Byte auch ausreichen würden), kannst du bequem an jede beliebige Stelle springen zum auslesen. |
Das wäre eine bessere Lösung, ein Datensatz ist immer gleich groß und somit kannst anhand der Dateigröße die exakte Anzahl Daten von jeder Position aus der Datei raus laden.... _________________
 |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 18.03.2014, 21:31 Titel: |
|
|
Off-Topic:
Zitat: | Die Funktion "Eof" arbeitet bei Dateien >4 GB nicht korrekt. |
Das Problem wird in der nächsten Version gefixt sein: commit |
|
Nach oben |
|
 |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
|
Verfasst am: 21.03.2014, 18:39 Titel: |
|
|
Zitat: | Die Datei ist dann allerdings nicht mehr für Menschen lesbar, aber das scheint mir ja auch nicht das Ziel zu sein. |
Die Datei sollte für Menschen schon noch lesbar sein! Ist eine txt Datei, wo alle gewonnenen Roulettezahlen mit Datum und Uhrzeit zum nachschauen drin stehen!
Die eine Idee die ich noch hatte, funktioniert sowie so nicht! Sobald ich die Datei lösche, kann ich keine Roulettezahlen mehr anschauen. Habe sie ja dann praktisch gelöscht! Ich bin da noch ein wenig am Rätseln, wie ich das am besten mache.
Es ist schon erstaunlich, dass unten stehende Zahlen nicht auslesbar sind!
Code: | 23 04-20-2013 00:23:19
5 04-20-2013 00:27:09
4 04-20-2013 00:27:49 |
Die Zahlen werden (fast) korrekt ausgelesen. Auch da gibt es ein kleines Problem! Aber das Datum wird zusammen mit der Uhrzeit ausgelesen!
Sollte normalerweise nicht sein, oder?
Ideen habe ich schon noch, wie das ganze zum lösen ist! Mal schauen was sich machen lässt.
Vielleicht lasse ich es ja auch sein? Das ist nur eine Idee von mir mit dem anzeigen der letzten 5-10 Roulettezahlen. Dummerweise habe ich auf dem Bildschirm keinen Platz mehr, für das Anzeigen der letzten 5-10 gewonnenen Roulettezahlen!
Wer Lust hat, kann sich Gedanken machen über einen funktionierenden Multiplayermodus für Roulette! Wie ist so einer am besten zu realisieren... Welche Funktionen sind vorhanden ... und so weiter!
Vielleicht kann man so einen für mein Rouletteprogramm realisieren?
Ich bin eh grad dabei mein Rouletteprogramm zu verbessern, dann könnte man sowas gleich mit einbauen!
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 21.03.2014, 20:08 Titel: |
|
|
Zitat: | Aber das Datum wird zusammen mit der Uhrzeit ausgelesen!
Sollte normalerweise nicht sein, oder? |
Klingt ziemlich normal. Woher soll deine Auslese-Funktion denn auch wissen, wo der String zu Ende ist und dass die Leerzeichen nicht zum String dazugehören?
Zitat: | Sobald ich die Datei lösche, kann ich keine Roulettezahlen mehr anschauen. Habe sie ja dann praktisch gelöscht! |
Ich dachte, eine Datei willst du immer stehen lassen und nur die andere immer verkürzen (für die dann kein menschenlesbares Format nötig ist - das menschenlesbare kann ich ja in der Gesamtlogdatei nachsehen). _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
RockTheSchock
Anmeldungsdatum: 04.04.2007 Beiträge: 138
|
Verfasst am: 21.03.2014, 23:04 Titel: |
|
|
Was ist an meiner Lösung falsch? Egal wie groß die Datei ist, es sollte immer schnell sein und funktionieren? |
|
Nach oben |
|
 |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1280 Wohnort: Ruhrpott
|
Verfasst am: 22.03.2014, 03:09 Titel: |
|
|
Hallo ALWIM
Du hast eine der wichtigsten Fragen noch nicht beantwortet:
RockTheSchock hat Folgendes geschrieben: | - Hast du Einfluss auf das Format der Textdatei. Wird die Datei von einem Programm dass du selbst geschrieben hast erzeugt? |
Ich hätte da vielleicht etwas für dich, ein wenig durch die Hintertür, aber ca. um den Faktor 10 schneller als "normale" Dateioperationen. Aber dafür müsste ich den genauen Aufbau der Datei kennen, insbesondere die verwendeten Trennzeichen. Wenn du einmal die Ascii-Werte der ersten ca. 100 Bytes der Datei posten würdest, könne ich dir eine Auslesefunktion maßschneidern.
Wenn du immer nur die neu dazugekommenen Zahlen auslesen möchtest, gibt es einen viel einfacheren Weg: Vorausgestzt, du hast überhaupt erst einmal ein Programm, das die Zahlen korrekt ausliest, kannst du, nachdem du die Datei einmal komplett bis zum Ende ausgelesen hast, mit Code: | Dim As LongInt zeiger
zeiger = Seek(f) | den Dateipointer ermitteln und in einer .ini - Datei abspeichern. Um beim nächsten Programmdurchlauf nur die neu dazugekommenen Zahlen auszulesen, holst du dir den gespeicherten Wert zurück und setzt den Dateipointer mit auf die Position, an der du beim letzten Mal aufgehört hast. Die nächste Leseoperation gibt dir dann die erste neue Zahl zurück.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Zuletzt bearbeitet von grindstone am 23.03.2014, 11:48, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
|
Verfasst am: 22.03.2014, 17:29 Titel: |
|
|
Zitat: | - Hast du Einfluss auf das Format der Textdatei. Wird die Datei von einem Programm dass du selbst geschrieben hast erzeugt? |
Ja, die Datei wird von einem Programm erzeugt, dass ich selber geschrieben habe.
So wird das ganze gespeichert:
Code: | ' Roulettezahl speichern
OPEN "Roulettezahlen.txt" FOR APPEND AS #f
PRINT #f, Roulettekugel, Datum, TIME
CLOSE #f |
So sieht die txt Datei dann aus:
Code: | 23 04-20-2013 00:23:19
5 04-20-2013 00:27:09
4 04-20-2013 00:27:49 |
Mittlerweile habe ich was funktionierendes in meinem Programm drin!
Bei 2.605.056 Zahlen sind das 47 Sekunden Einlesezeit!
Bei 2.572.596 Zahlen mit Datum und Uhrzeit sind das 56 Sekunden Einlesezeit.
Ich glaube nicht, dass einer so oft Roulette spielt!
Pro Minute ca. 1 gewonnene Zahl macht ca. 60 Zahlen in der Stunde! Wer spielt schon jeden Tag 1 Stunde lang Roulette? Wären im Jahr ca. 21900 Zahlen! 60 Jahre lang und wir kämen auf gerade mal 1.314.000 Zahlen!
Das ist alles noch im grünen Bereich würde ich mal sagen.
Bei Tests brauchte ich ca. 45 Sekunden bis ich auf eine neue Zahl setzen konnte! Da habe ich aber nicht so lange überlegt!
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
 |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1280 Wohnort: Ruhrpott
|
Verfasst am: 23.03.2014, 11:47 Titel: |
|
|
Hallo ALWIM!
Wenn du die Zahlen so abspeicherst, ist der gezielte Zugriff doch ganz einfach!
Jeder Record belegt einschließlich CR/LF genau 38 Bytes (das kannst du mit jedem Hex-Editor nachprüfen). Die Anzahl der in deiner Datei gespeicherten Datensätze ermitelst du mit Code: | Dim As Integer anzahl
anzahl = Lof(f) / 38 | und um auf einen bestimmten Datensatz zuzugreifen, setzt du vor der Leseoperation den Dateipointer mit Code: | Dim As Integer datensatz
datensatz = 312 'nur mal als Beispiel
Seek f,(datensatz - 1) * 38 + 1 |
auf das erste Zeichen des 312. Datensatzes, den du dann anschließend ganz normal auslesen und anzeigen kannst: Code: | Dim As String wert
Input #f, wert
Print " Datensatz";datensatz
Print "Roulettezahl ";Left(wert,3)
Print " Datum ";Mid(wert,14,10)
Print " Uhrzeit ";Mid(wert,28,8) |
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
|
Verfasst am: 24.03.2014, 00:17 Titel: Re: Ringpuffer zum Einlesen |
|
|
Sebastian hat Folgendes geschrieben: | Hi ALWIM,
wenn du nicht alle x Millionen Zahlen brauchst in der Auswertung, sondern nur die nach Datum neusten 5, könntest du beim Einlesen einen Ringpuffer verwenden. Dann brauchst du kein riesengroßes Array und musst dich nicht darauf verlassen, dass bspw. immer ausschließlich Windows-Zeilenumbrüche CrLf vorkommen.
Viele Grüße!
Sebastian |
Genau so eine ähnliche (gleiche) Idee hatte ich mal im Kopf drin! Also wenn 1 Spiel gemacht wurde, die älteste Zahl aus der Datei löschen und die neueste gewonnene Zahl in die Datei abspeichern! Vielleicht kann ich das irgendwie, irgendwann umändern! Habe noch keine Idee gehabt, wie ich das am besten hinkriege. Bis jetzt habe ich die wahrscheinlich schlechteste bzw. ungünstigste aller Methoden drin. Alle Zahlen werden ausgelesen und die 10 neuesten auf dem Bildschirm angezeigt! Gleichzeitig wird die Anzahl der vorhandenen Zahlen ermittelt! Diese wird benötigt zur Errechnung der letzten gewonnenen Zahlen.
Aber danke für die professionelle Hilfe! Mein Projekt/Idee funktioniert bisher problemlos!
Sobald ich 2 wichtige Sachen noch hineinprogrammiert habe, werde ich das ganze mal als Download zur Verfügung stellen! Ist richtig Geil geworden! Bei Tests bin ich von 300.000 € auf 600.000 € raufgekommen! Allerdings auch von 800.000 € runter auf 300.000 €!
Ich habe ein gewinnbringendes System für Roulette! Hoher Gewinn garantiert! Würde ich ins Casino gehen, würde ich bei jedem Casino Hausverbot kriegen bzw. das Casino zum Bankrott bringen! So sicher ist mein System. Fast 100% Wasserdicht! Eine kleine Schwachstelle gibt es leider auch bei meinem System. Demnach könnte es sein, dass man trotz dem Wasserdichten System große Verluste macht!
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|