 |
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 |
pzktupel

Anmeldungsdatum: 07.07.2020 Beiträge: 72
|
Verfasst am: 15.05.2022, 07:33 Titel: Zeichenkette einlesen - Windows10 korrekt, Windows7 nicht |
|
|
Hallo !
Ich weiß nicht, obs bekannt war...
Ich habe 2 PCs (baugleich) , einmal Win10 64bit und Win7 64bit.
Jetzt habe ich ein Programm geschrieben, das von Quellen große Zeichenketten einlesen muss. Während Win10 fehlerfrei es tat, passierte ohne Absturz unter Win7 was anderes.
Nach 1 Tag Fehlersuche fand ich den Grund.
Wird unter Win 7 eine Datei mit einer Stringlänge von mehr als 2^32 Byte (oder 2^31 Byte ???) eingelesen, passieren Fehler ohne Absturz, unter Win10 nicht.
Zerstückelt man das Einlesen in Blöcke , ist es okay.
Ich wollte es nur mal erwähnen...
Gruß _________________ Umfangreichste Angaben zu Primzahl k-Tupel
https://www.pzktupel.de/ktuplets.htm |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4531 Wohnort: ~/
|
Verfasst am: 15.05.2022, 14:38 Titel: |
|
|
Verwendest du beide Male denselben Compiler? (Sprich: beide Male der 64bit-Compiler?) _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
pzktupel

Anmeldungsdatum: 07.07.2020 Beiträge: 72
|
Verfasst am: 15.05.2022, 20:02 Titel: |
|
|
Huhu !
Also das wurde 1mal compiliert und auf den 2. PC kopiert.
Aber! die Idee hatte ich auch und kompilierte es auf dem PC 2 ....derselbe Fehler in der Verarbeitung. Aufs Bit genau waren beide Datein nach dem kompilieren. (win10 und 7)
baugleiche Systeme: MSI Gaming B450M, 32GB RAM, Ryzen 7 1700
Die verdichtete Primzahldatei bis 9 Mrd ( ~ 1,2 GB ) wurde auf beiden
korrekt eingelesen (400 Mio Zahlen)
Zwei weitere Datein an diese gekoppelt haben über 5GB. Liest man es als eine Kette ein, arbeitet das Program unter Windows 7 fehlerhaft...er schreibt in den RAM ab einer bestimmten Position nur noch Nullen. _________________ Umfangreichste Angaben zu Primzahl k-Tupel
https://www.pzktupel.de/ktuplets.htm |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1834 Wohnort: [JN58JR]
|
Verfasst am: 15.05.2022, 22:36 Titel: |
|
|
Kannst du uns den Codeteil des Einlesen und in's RAM kopieren aufzeigen?
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
pzktupel

Anmeldungsdatum: 07.07.2020 Beiträge: 72
|
Verfasst am: 16.05.2022, 02:55 Titel: |
|
|
Ja, hier:
Code: |
#INCLUDE "windows.bi"
#INCLUDE "vbcompat.bi"
Dim As Any Ptr T1,T2,T3,T4,T5,T6,T7,T8
DIM AS UINTEGER pc,i,check,CB,j,PPP
DIM AS INTEGER ocstart
DIM AS USHORT EE,CC,yi,dis
DIM SHARED AS UINTEGER TS,O,Pspr
DIM SHARED AS STRING S,T,FF
DIM AS BYTE k,sp,TNR
....
PC=0
S=""
REDIM SHARED MA(400000000) AS UINTEGER
OPEN "E:\TUPEL\13#_10Mrd.src" FOR Binary Access Read AS #110
S=INPUT(4400000000,#110)
CB=1
WHILE CB<4400000000
PC+=1:MA(PC)=VALULNG(MID(S,CB,11))
CB+=11
WEND
CLOSE #110
|
Die Lesegröße von 4400000000 Byte unter Windows 7 liefert falsches in die Zelle MA(PC) ab einer Position X, wahrscheinlich X>2^31 oder 2^32
Bewährte Lösung, Auszug:
Code: |
S=""
REDIM SHARED MA(400000000) AS UINTEGER
OPEN "E:\TUPEL\13#_10Mrd.src" FOR Binary Access Read AS #110
PC=0
FOR j=1 TO 40
S=INPUT(110000000,#110)
CB=1
WHILE CB<110000000
PC+=1:PPP=VALULNG(MID(S,CB,11))
MA(PC)=PPP
CB+=11
WEND
NEXT j
CLOSE #110
|
_________________ Umfangreichste Angaben zu Primzahl k-Tupel
https://www.pzktupel.de/ktuplets.htm |
|
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.
|
|