hat wer eine Idee wo der Unterschied zwischen den Nullterminierten Strings ist, den beide Codeschnipsel ({1} / {2}) zurueckliefern?
Beide liefern einen String zurueck, der sich in Pascal scheinbar voellig normal verhaelt (also write klappt), aber nur der von Code {1} zurueckgelieferte String laesst sich in Interruptroutienen (int 21h) verwenden...
Das Ergebnis von StrPCopy funktioniert bei dem Interrupt uebrigens auch nicht...
Borland Pascal 7
Code: Alles auswählen
function StrToPChar(Name:String):Pchar;
type CharArray=array[0..255]of Char;
var StrHelper:CharArray absolute Name;
PChHelper1:PChar;
PChHelper2:^CharArray absolute PChHelper1;
i:word;
begin
{1}
PChHelper1:=#0 ...::EDIT: gekuerzt, #0 stand hier 256 mal::...
for i:=0 to ord(StrHelper[0])-1 do
PChHelper2^[i]:=StrHelper[i+1];
PChHelper2^[ord(StrHelper[0])]:=#0; {EDIT: Pflaster, da irgendwie lange Strings Reste hinterlassen}
{/1}
StrToPChar:=PChHelper1;
end;
{2}
for i:=0 to ord(StrHelper[0])-1 do
PChHelper2^[i]:=StrHelper[i+1];
PChHelper2^[ord(StrHelper[0])]:=#0;
{/2}