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
Fehler bei Stringverarbeitung
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
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
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
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- 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:
kann ich nachvollziehen.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...
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.
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
Re:
@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
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