Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi PChar, String und abgeschnittene Ergebnisse (https://www.delphipraxis.net/84759-pchar-string-und-abgeschnittene-ergebnisse.html)

Zacherl 21. Jan 2007 11:17


PChar, String und abgeschnittene Ergebnisse
 
Hi,

folgendes Problem: Ich habe eine Datei, die ich in einen MemoryStream lade und den Inhalt dann in einen String, so dass die Datei praktisch im String drin steht.

Bei dieser Stelle ist die Datei auch noch komplett. Wandle ich den String jetzt in einen PChar um, wird ab einer gewissen Stelle alles vom eigentlichen String abgeschnitten? Woher kommt das?

Florian

mkinzler 21. Jan 2007 11:22

Re: PChar, String und abgeschnittene Ergebnisse
 
Was für ein Zeichen steht an der Stelle?

r2c2 21. Jan 2007 11:24

Re: PChar, String und abgeschnittene Ergebnisse
 
Zitat:

Zitat von mkinzler
Was für ein Zeichen steht an der Stelle?

meine Glaskugel sagt, da steht ein #0...

==> nimm n Array[0..size -1] of Byte oder n PByte mit manueller Speicherverwaltung...

mfg

Christian

Zacherl 21. Jan 2007 11:30

Re: PChar, String und abgeschnittene Ergebnisse
 
#0 ist sehr gut denkbar, weil ich eine Binärdatei einlese. Das Problem ist, dass ich die Datei erst als String haben, muss, um diesen zu encodieren und dann den encodierten String als PChar benötige, um ihn in eine Resource zu schreiben.

Klingt etwas umständlich die Datei erst in einen String zu schreiben und zu encodieren, muss aber sein.

mkinzler 21. Jan 2007 11:32

Re: PChar, String und abgeschnittene Ergebnisse
 
Meine Vermutung ging in die selbe Richtung, ersetze mal die #0 durch z.B. #32.

Zacherl 21. Jan 2007 11:35

Re: PChar, String und abgeschnittene Ergebnisse
 
Ich darf die Daten innerhalb des Strings nicht verändern. Ich selber hatte auch auf ein #0 getippt. Ich muss den String nur irgendwie nach dem encodieren als Pointer haben, so dass ich UpdateResource aufrufen kann.

mkinzler 21. Jan 2007 11:37

Re: PChar, String und abgeschnittene Ergebnisse
 
Dann lade sie doch in einen Buffer und übergebe einen Pointer auf diesen

SirThornberry 21. Jan 2007 11:44

Re: PChar, String und abgeschnittene Ergebnisse
 
wie wandelst du das ganze zu einem PChar? Ich denke mal du musst der Funktion zum überschreiben einen Pointer übergeben. Dabei spielt es auch keine Rolle ob es ein typisierter Pointer ist oder nicht. Zusätzlich denke ich das du der Funktion auch dei Größe der Daten mitgibst und da wird einfach dein Fehler sein.

marabu 21. Jan 2007 11:44

Re: PChar, String und abgeschnittene Ergebnisse
 
Hallo Florian,

wenn das Encoding inplace stattfindet, dann lade die Daten in einen StringStream und verwende @DataString[1] für UpdateResource(). Dort wird kein PChar benötigt, da eine Größenangabe mit übergeben werden muss.

Grüße vom marabu

MrKnogge 21. Jan 2007 11:47

Re: PChar, String und abgeschnittene Ergebnisse
 
Zitat:

Zitat von SirThornberry
Zusätzlich denke ich das du der Funktion auch dei Größe der Daten mitgibst

Warum sollte man bei einem 0-Terminierten-String die Größe mitgeben müssen ?

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:35 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz