Seite 1 von 1

Fehler bei Stringverarbeitung

Verfasst: 31.03.2008 12:25
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

Verfasst: 31.03.2008 12:38
von Rings
Chr(0) in verwendung ???

Verfasst: 31.03.2008 12:44
von Kaeru Gaman
yo ist auch mein gedanke dazu.

Verfasst: 31.03.2008 12:48
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

Verfasst: 31.03.2008 13:08
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

Verfasst: 31.03.2008 14:02
von NicTheQuick
Benutzt du Threads?
Dann musst du das in den Compiler-Optionen entsprechend anpassen, damit
Strings funktionieren.

Verfasst: 31.03.2008 14:07
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

Re:

Verfasst: 31.03.2008 22:20
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