![]() |
PChar _nur_ 256 zeichen?
Ich habe folgende Funktion :
Delphi-Quellcode:
Die erster Meldung gibt mir 256 und die zweite 255 zurueck. Warum sind die beiden Meldungen nicht identisch, in dem fall 1111?
function meep(pc: PChar; len: Integer): Pchar;
var i: integer; begin for i := 1 to len - 1 do if (pc[i] = #0) then pc[i] := '.'; result := Pchar(pc + #0); end; var i : integer; pc : Pchar; begin pc := ''; for i := 1 to 1111 do pc := PChar(pc + '#'); showmessage(inttostr(length(pc))); pc := meep(pc,length(pc)); showmessage(inttostr(length(pc))); end; :gruebel: |
Re: PChar _nur_ 256 zeichen?
Hi,
String-Konstanten werden intern als short string (max. 255 Zeichen) geführt. Bei der Verkettung mit einem C-String (PChar) werden die beiden Operanden angepasst und die Restriktion gilt dann auch für das Ergebnis. Grüße vom marabu |
Re: PChar _nur_ 256 zeichen?
Zitat:
|
Re: PChar _nur_ 256 zeichen?
Hier die Lösung:
Delphi-Quellcode:
(siehe nach >>)
function meep(pc: PChar; len: Integer): Pchar;
var i: integer; begin for i := 1 to len - 1 do if (pc[i] = #0) then pc[i] := '.'; >> result := Pchar(string(pc) + #0); end; var i : integer; pc : Pchar; begin pc := ''; for i := 1 to 1111 do >> pc := PChar(string(pc) + '#'); showmessage(inttostr(length(pc))); pc := meep(pc,length(pc)); showmessage(inttostr(length(pc))); end; ...:cat:.... |
Re: PChar _nur_ 256 zeichen?
@Marabu
Danke fuer deine Antwort, nur wie kann ich das umgehen? In meinem Projekt liegt ein Pchar mit 800 zeichen vor, sobald ich ihm durch meine Funktion jage werden aus 800 255 :gruebel: @ste_ett Das -1 ist schon richtig ^^ @sakura wow danke, gleich mal testen :mrgreen: |
Re: PChar _nur_ 256 zeichen?
Hallo Win32.API,
ich wollte zunächst nur darauf hinweisen, dass Du string-Bearbeitung (pc + '#') und PChar-Bearbeitung (pc ist PChar) mixt. Das gleicht Delphi zwar automatisch an, aber teilweise mit unklaren Ergebnissen. Marabu hat diesen Hinweis bereits erweitert, nämlich welches unklare Ergebnis auftritt. Wenn Du zwischen string und PChar hin- und herschalten willst/musst, dann deklariere Dir getrennte Variable und benutze die jeweils vorgesehenen Methoden. Gruß Jürgen |
Re: PChar _nur_ 256 zeichen?
Zitat:
Code:
for i := [color=#ff0000][b]0[/b][/color] to len - 1 do
|
Re: PChar _nur_ 256 zeichen?
Danke an alle, jetzt gehts :thumb:
@Himitsu stimmt, mein fehler ^^. Aber warum geht .. for i := 1 .. dann auch? |
Re: PChar _nur_ 256 zeichen?
weil "rein zufällig" das erste (0.) Zeichen kein #0 ist :zwinker:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz