![]() |
String-Inhalt nach Copy einfach weg
Moin,
ich hab hier einen sehr langen String (laut length() über 10.000-Zeichen). Der ist im XML-Style gehalten und dort möchte ich nun einen bestimmten Abschnitt raus haben und wollte dies mit Copy machen. Doch danach ist der Destination- und Source-String leer. Eventuell liegt es auch daran das ich den String aus einem OXC bekomme (als var) und deshalb nur ein Pointer weitergegeben wird?! |
Re: String-Inhalt nach Copy einfach weg
Zeig mal etwas Code
|
Re: String-Inhalt nach Copy einfach weg
Zitat:
Delphi-Quellcode:
oWDSL.GetStringGrid(GridInfo.Row,11, cTemp);
Jpg64 := Copy(cTemp,Pos('<picdata>',cTemp)+9,5); // nach dem Copy ist cTemp und Jpg64 leer |
Re: String-Inhalt nach Copy einfach weg
Was für eine typ hat die Variable?
|
Re: String-Inhalt nach Copy einfach weg
Beides als String deklariert:
Delphi-Quellcode:
Die Prozedur aus dem OCX ist ein Widestring (BSTR*):
var cTemp : String;
Jpg64 : String;
Delphi-Quellcode:
procedure GetStringGrid(ARow: Integer; ACol: Integer; var Dummy: WideString); stdcall;
|
Re: String-Inhalt nach Copy einfach weg
Kopiere die Variable mal in eine loakle Variable
Delphi-Quellcode:
var
cTemp : WideString; sTemp, Jpg64 : String; ... oWDSL.GetStringGrid(GridInfo.Row,11, cTemp); stemp := cTemp; Jpg64 := Copy(cTemp,Pos('<picdata>', sTemp)+9,5); |
Re: String-Inhalt nach Copy einfach weg
Zitat:
|
Re: String-Inhalt nach Copy einfach weg
Zitat:
Delphi-Quellcode:
idx := Pos('<picdata>', sTemp);
if idx > 0 then ... |
Re: String-Inhalt nach Copy einfach weg
Fehler lag daran das ich nach dem ich den String geholt hatte ein weiteren OCX Aufruf gemacht habe (der zwar nichts mit der anderen Variable zu tun hat aber) der anscheinend dazu führt das der String (und alle sich darauf beziehnenden) aufeinmal leer sind.
Um es noch mal im Code auszudrücken: So hat es nicht geklappt:
Delphi-Quellcode:
und so klappt es:oWDSL.GetStringGrid(GridInfo.Row,11, cTemp); oWDSL.AnzeigeTyp := 0; if cTemp <> '' then begin cTmp := cTemp; Jpg64 := Copy(cTmp,Pos('<picdata>',cTmp)+9,Pos('</picdata>',cTmp)-Pos('<picdata>',cTmp)-9); end;
Delphi-Quellcode:
Wobei nach dem Aufruf von "oWDSL.AnzeigeTyp := 0;" cTemp immer wieder leer wird, obwohl es ja nur ein Setter ist... Was Delphi da macht keine Ahnung :SoWDSL.GetStringGrid(GridInfo.Row,11, cTemp); if cTemp <> '' then begin cTmp := cTemp; Jpg64 := Copy(cTmp,Pos('<picdata>',cTmp)+9,Pos('</picdata>',cTmp)-Pos('<picdata>',cTmp)-9); end; oWDSL.AnzeigeTyp := 0; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:38 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