String Max LEN 8192??!

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

String Max LEN 8192??!

Beitrag von Max_der_Held »

"A literal string can't be bigger than 8192 characters."
In meinem String sind Daten, die möchte ich zum Debuggen über virtual COM an meine Software schicken.
--> Stringgröße ist sehr viele bytes Groß.

Bild
Warum?.. Wie umgehen wenn nicht aufteilen?..

Lg, Max

Ok, Lösung: Programm schreiben, dass String aufteilt, oder nur ein paar Sequenzen einfügen..
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7039
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: String Max LEN 8192??!

Beitrag von STARGÅTE »

Um mal auf die Frage im Title zu antworten:
Nein, die maximale Stringlänge liegt nicht bei 8192 ...
Man kann mehrere Millionen Zeichen in einem String haben.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Derren
Beiträge: 558
Registriert: 23.07.2011 02:08

Re: String Max LEN 8192??!

Beitrag von Derren »

Das ist eine Begrenzung der String-Variable. "A literal string..."

Code: Alles auswählen

var$ = "alles hier drin ist LITERAL"

var1$ = Space(8192) ;Space(9999999) geht auch, ist ja kein "literal"
var2$ = Space(8192)
var3$ = var1$ + var2$
SendToComPort(var3$) ;oder wie auch immer die Funktion heißt
Signatur und so
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Re: String Max LEN 8192??!

Beitrag von Max_der_Held »

ja, ja, blöd formuliert.. schon klar dass ein null terminierter String mit quasi-unendlich Zeichen nicht irgendwo aufhört.
Mir gings um die Fehlermeldung

wahrscheinlich muss ichs halt aus ner datei laden.. einfach txt datei eine MAKRO Zeile reinwerfen und dann "readstrin()" auslesen.. dann hab ich meinen RIEßEN String und kann die Messreihe Simuliern..

gelöst, ende.. hat mich nur verwundert dass die der Compiler da eine Grenze setzt.

lg

max
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: String Max LEN 8192??!

Beitrag von NicTheQuick »

Ein LITERAL STRING ist ja sozusagen eine Konstante, die später so fest in einer EXE-Datei steht. Vermutlich kommt die Fehlermeldung auch eher über FASM.
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Re: String Max LEN 8192??!

Beitrag von Max_der_Held »

warum Fasm? das hat mit konstanten prekompilieren etc. doch nichts am hut..?
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: String Max LEN 8192??!

Beitrag von NicTheQuick »

Weil PB alle konstanten Strings, die in einem Quellcode stehen, in eine Art Datasection im entstehenden ASM-Output kopiert und dann nur noch dahin verweist. Sobald du so eine Konstante dann einer Variablen zuweist, was mit ' s.s = "Text" ' schon passiert, wird die Konstante "Text" erst in den dynamischen Stringpool von PB kopiert. Und meine Vermutung war, dass "Text" eben nicht länger als 8192 Zeichen sein darf.
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Re: String Max LEN 8192??!

Beitrag von Max_der_Held »

Wo kann ich mehr zur Purebasics compiler internals lesen?
(Nicht dass ich die Zeit hätte..)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: String Max LEN 8192??!

Beitrag von NicTheQuick »

Eigentlich reicht die Hilfe mit ihren Compiler-Flags und dann kannst du dir mal den ASM-Output anschauen.
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Re: String Max LEN 8192??!

Beitrag von Max_der_Held »

ok danke.
Btw. das Testprogramm und HTerm haben meinen Fehler im Hauptprogramm entdeckt.
[Wegen diesem Fehler habe ich diesen Tester hier ja geschrieben]

Ich hab die Messwerte an der Falschen Position aus dem Buffer gelesen.. weil man ja position -1 rechnen muss..

Code: Alles auswählen

; byte1 = speed_links
; byte 2 = speed_rechts 
; byte 3,4 = bremskraft links -> little endian 2bytes!

peeka (buffer + x )  ; mit X startet bei 0 um byte 1 zu lesen... 
Lg

Max Aigner

[und jetzt Russisch lernen und seminararbeit weiter..]
Antworten