Fehler bei Stringverarbeitung

Fragen und Bugreports zur PureBasic 4.0-Beta.
Joshua314
Beiträge: 115
Registriert: 06.04.2005 22:44

Fehler bei Stringverarbeitung

Beitrag von Joshua314 »

Hallo Leute,

ich meine einen Fehler in der Stringverarbeitung gefunden zu haben. PB4.10

Mein PRG addiert einen String bis zur Länge von 60-80kB auf.
Dazu sind verschiedene Schritte dazwischen. Im Prinzip schaut das so aus.

schreiben.s = Schreiben + teilstring.s

Dies geht bei 7-8 von 10 Fällen gut.

Manchmal setzt PURE den String zwischen drin auf null zu setzen und macht dann weiter.
Manchmal lässt PURE aber nur den Teilstring weg.....

Nachdem ich alles auf direkten Memory-Zugriff umgeschrieben habe geht das Programm in 100 von 100 Fällen ... sprich am PRG kann es nicht liegen, dass es vorher Probleme gab.

Eure Meinung dazu .....

PS: Ein For I = 1 to 1000 : Schreiben.s + "TESTDUMMY" : Next I

macht keine Fehler es muss schon etwas mehr Quell dazwischen sein...

Gruß Thomas
Benutzeravatar
Rings
Beiträge: 971
Registriert: 29.08.2004 08:48

Beitrag von Rings »

Chr(0) in verwendung ???
Rings hat geschrieben:ziert sich nich beim zitieren
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

yo ist auch mein gedanke dazu.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

@Joshua314: Wie kontrollierst Du, dass der String nicht komplett ist? Via
Debugger-Ausgabe? Denk dran, dass hier bei langen Strings nicht der
komplette Inhalt dargestellt wird.

Grüße ... Kiffi
Hygge
Joshua314
Beiträge: 115
Registriert: 06.04.2005 22:44

Beitrag von Joshua314 »

Hallo Zusammen,


1. CHR(0) nein kein CHR(0) drinnen ....wie schon geschrieben......
Der gleiche Programmablauf die gleiche Art Die gleiche Quelldatei die verarbeitet wird. Nur der Button Start. 10 x gedrückt.

1. Debug nur Len(schreiben) unterschiedlich.
2. Wird der String in die Zwischenablage kopiert..... danach in einem Editor angeschaut.... da steht auf einmal am Anfang das Datum und die Uhrezit drinnen. ..... DAS IST NIRGENS im Quelltext.


Als ORG Ist hier http://db0noe.dyndns.org/Max_convert.zip
der Quell mit Datei zu finden....

Einfach PRG Starten.... Quelldatei auswählen.. und in button für die zwischenablage 10 mal benutzen zwischendurch immer mal was anderes raus...

Gruß Thomas
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von NicTheQuick »

Benutzt du Threads?
Dann musst du das in den Compiler-Optionen entsprechend anpassen, damit
Strings funktionieren.
Bild
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Joshua314 hat geschrieben:Einfach PRG Starten.... Quelldatei auswählen.. und in button für die zwischenablage 10 mal benutzen zwischendurch immer mal was anderes raus...
kann ich nachvollziehen.

Zu Testzwecken habe ich daraufhin Deinen komischen Uhren-Thread erst
einmal entfernt und aus dem WindowEvent() ein WaitWindowEvent()
gemacht.

Nun ist die Länge des Textes konstant. :cool:

Bleibt natürlich jetzt Dir überlassen, ob Du für so eine Nebensächlichkeit
wie die Zeitanzeige mittels eines Threads die Stabilität Deines
Programmes gefährden willst, oder ob Du nicht vielleicht doch lieber mit
einem Timer arbeiten möchtest ;-)

Grüße ... Kiffi
Hygge
Joshua314
Beiträge: 115
Registriert: 06.04.2005 22:44

Re:

Beitrag von Joshua314 »

@ALL

Eigentlich ja .. weil Thread's sind doch genau die Sache... Einmal Anwerfen und vergessen.....

OK wenn das an der String Verarbeitung gesamt liegt .... wusste ich nicht ....
Wo liegt denn dann die kritische Grenze ??? Oder muss man generell die Thread Sicherung bei String einschalten.... dies währe dann aber doch nicht die schlauste ART. Ich meinte immer, das mit der Thread Sicherung hat damit zu tun, wenn man Strings in den Thread rein/raus macht. Dass dies mit der allgemeinen Verarbeitung zu tun hat..... wusste ich nicht ....
Dennoch habe ich das ganze in der Zwischenzeit mit direkten Speicherzugriff gelöst. Nebeneffekt... 100x schneller....

Gruß Thomas
Gesperrt