Autor | Thema: &laststring | | Datum:05.09.01 16:40 
(frankabbing@12move.de) | |
Hallo Roland,
wie wäre es mit einer neuen Systemvariablen, die den Pointer des zuletzt benutzen oder erstellten Strings zurückgibt, so z.B.:
test$="Probetext"
'So, in &laststring befindet sich jetzt der Pointer auf text$
So eine Variable hätte ich schon des öfteren benötigen können und in vielen SystemAPI's wird so ein Pointer benötigt...
Sollte ja nicht schwer einzubauen sein, oder ???
MfG
Frank Abbing
|
| | Datum:05.09.01 22:33 
(rgh-soft@t-online.de) | |
Was spricht dagegen, die Funktion @Addr() hierfür zu verwenden?
Test$ = "String"
LastString& = @Addr(Test$)
|
| | Datum:06.09.01 06:42 
(frankabbing@12move.de) | |
Hallo Roland,
natürlich kenne ich Addr(...), ist aber nicht unbedingt konfortabel und ein bischen unübersichtlich ist es auch, finde ich.
Was spricht denn gegen einen Einbau von &laststring ??? Die drei-vier Zeilen Code wären doch kein Riesenaufwand, oder ?
MfG
Frank
|
| | Datum:02.10.01 21:49 
(prof.chaos@netcologne.de) | |
Hallo,
wie wäre es denn, wenn man für einen API-Aufruf nicht mehr den String-Pointer angeben müsste, sondern den String selbst?
Das wäre bei einer Reihe externals oder defs noch übersichtlicher.
Sebastian
|
| | Datum:02.10.01 22:39 
(frankabbing@12move.de) | |
Hallo,
das wäre auch gut. Ich verstehe eh nicht, warum Bereiche und Strings verschieden gehandhabt werden. Sind doch beides Speicherbereiche, oder...?
Roland, ist der Speicher für einen String eigentlich variabel oder wird immer ein gleich großer Speicherbereich reserviert. Z.B. für den Text "Hallo", werden dort 32768 Bytes reserviert ?
Gruss, Frank
|
| | Datum:04.10.01 07:36 
(schmidts@flat2serv.de) | |
Ganz einfach: In C wird das String-Ende durch ein #0 gekennzeichnet. Bei Delphi wird noch die Stringlänge mit verwaltet. Damit sind die nicht kompatible zueinander, dies muss erst mit PChar() erledigt werden. Daher der Zwischenweg.
Hier der entsprechende Hilfeteil:
"
Eine AnsiString-Variable ist ein Zeiger, der vier Bytes Speicherplatz belegt. Wenn die Variable leer ist (d.h. wenn sie einen String der Länge Null enthält), hat der Zeiger den Wert nil, und der String belegt keinen Speicherplatz. Ist die Variable nicht leer, zeigt sie auf einen dynamisch zugewiesenen Speicherblock, der neben dem String-Wert eine Längenangabe und einen Referenzzähler von je 32 Bit enthält.
"
Mfg.
Sven Schmidts
|
| | Datum:04.10.01 07:37 
(schmidts@flat2serv.de) | |
Nachtrag:
Soweit ich das verstanden habe, nutzte Profan² bisher immer ShortStrings (String[255]) und nun AnsiStrings. Man möge mich korrigieren, wenn ich mich täusche ;)
|
| | Datum:04.10.01 16:52 
(frankabbing@12move.de) | |
Hallo Sven,
danke für die Infos. Mit Delphi kenne ich mich gar nicht aus, mit C++ nur ein kleines bischen.
Leider muß man bei solchen Programmsprachen immer sagen: Warum einfach, wenn's auch kompliziert geht. Ne, da bleib' ich lieber bei Assembler (und Profan natürlich), das ist viel einfacher...
Gruss, Frank
|
| | Datum: 04.10.01 18:58 
(schmidts@flat2serv.de) | |
Der Umweg muss gemacht werden, weil das Ursprungs-C in dieser Form keine Stringvariablen unterstützt. Delphi nutzt bei Strings z.B. Referenzzähler, um den Arbeitsspeicherbedarf und die Ausführgeschwindigkeit zu optimieren.
|
|
|