Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 243002 (4438)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Null-byte am Stringende
Philipp Sternberg
| Datum:03.05.02 11:11 (ps@burghardt-ib.de) |
Hallo, kurze Frage wenn ich eine Stringvariable habe mit einem wert:
    let string$ = "BEISPIEL"
hat der String dann am ende automatisch ein Nullbyte oder nicht ?? bzw ist dann
    string$ == string string#,0 = "BEISPIEL"
    oder
    string$ == char string#,0 = "BEISPIEL"
Vielen Dank für evtl. Antworten... Philipp Sternberg
Sven Schmidts
| Datum:03.05.02 12:05 (schmidts@flat2serv.de) |
Kommt auf die Profan Version an. Bei langen Strings ja (#0). Mfg. Sven Schmidts
Roland G. Hülsmann
| Datum:03.05.02 14:00 (rgh-soft@t-online.de) |
Ich nehme an, Dir geht es um den Unterschied zwischen den Befehlen String und Char: string string#,0 = "BEISPIEL" Hier wird hinter den 8 Bytes des Strings noch ein Null-Byte angehängt, sodaß der benötigte Speicherplatz 1 mehr, als die Länge des Strings ist, in diesem Fall also exakt 9 Bytes. char string#,0 = "BEISPIEL" Hier wird kein Null-Byte angehängt und daher werden hier auch nur 8 Bytes in der Bereichsvariable beschrieben. Intern verwendet PROFAN die langen Strings, wie sie auch Delphi verwendet: d.h. die Längeninformation des Strings wird in den vier Bytes vor der Anfangsadresse des Strings verwaltet. Auf diese Weise können auch Strings in PROFAN das Zeichen mit dem Wert 0 ( Chr$(0) ) enthalten. Ein Null-Byte wird hier also nicht als String-Begrenzung betrachtet! (Anders ist es bei Windows-API und anderen DLLs: Hier gilt ein Nullbyte als Stringende. Eine andere Information über die Länge des Strings gibt es dann nicht.)
Philipp Sternberg
| Datum: 03.05.02 14:46 (ps@burghardt-ib.de) |
Vielen Dank für eure schnellen antworten. Das heißt also, dass ich an eine Api-Funktion auch einen string übergeben kann, der mitten drinnen null-bytes enthält (die Message TB_ADDSTRING verlangt einen solchen), @sendmessge(toolbar&,TB_ADDSTRING,dll_inst&,@AddR(string$)) Wenn ich euch richtig verstanden hab bedeutet dies: In diesem Fall kann ich unter Profan 7.x statt string string#,0 = "BEISPIEL" auch string$ verwenden, während ich bei Profan "kleiner 7.0" statt string string#,0 = "BEISPIEL" nicht string$ sondern string$+@chr$(0) verwenden müsste (und AddR(string$)+1). Danke

| Zurück zur Übersicht