![]() |
StringReplace verursacht AV
Delphi-Quellcode:
txt Rückgabe ist "Ö&ffnen"
var
Txt: PWideChar; tmpTxt: WideString; Txt := PWideChar(SkinEngine.GetCTLText(PDis.hwndItem)); tmpTxt := StringReplace(string(Txt), '&','', [rfReplaceAll]); tmpTxt soll jetzt den Char "&" entfernen aber es kracht mal wieder. Kann nicht erkennen wo hier wieder ein Fehler sein soll. read of address ... gruss |
AW: StringReplace verursacht AV
Ich habe bei mir mal folgendes getestet und ich habe keine AV bekommen:
Delphi-Quellcode:
Also entweder wird hier auf eine andere StringReplace-Funktion zurückgegriffen oder es gibt einen Fehler in der Zeile, wo der Variable "Txt" etwas zugewiesen wird.
var
Txt: PWideChar; tmpTxt: WideString; begin Txt := 'Ö&ffnen'; tmpTxt := StringReplace(string(Txt), '&', '', [rfReplaceAll]); end; |
AW: StringReplace verursacht AV
Delphi-Quellcode:
string(Txt)
Weg mit dem schrottigen Cast und wenn nicht, dann soll man sich auch nicht wundern, wenn man die automatische Speicherverwaltung der Strings durcheinander bringt. ![]() |
AW: StringReplace verursacht AV
Frage neben bei:
was macht StripHotkey anders als StringReplace? |
AW: StringReplace verursacht AV
Zitat:
Grüße Dalai |
AW: StringReplace verursacht AV
Aber warum nur? :? Woher soll der Nutzer denn wissen, welches der Hotkey für die Schaltfläche ist?
|
AW: StringReplace verursacht AV
Und es lässt geqoutede Hotkeys dequoted zurück.
Delphi-Quellcode:
&Hallo && Tschüss
|
AW: StringReplace verursacht AV
Zitat:
Ohne das entfernen steht auf meinen Button der Text so "Ö&ffnen" Warum GDI Plus das nicht erkennt da fragst du mich zu viel. gruss |
AW: StringReplace verursacht AV
Zitat:
EDIT: Ok hat sich erledigt.. Nach dem aktivieren des Combo Hook um eigene Bilder in den Button zu zeichnen habe ich das HDC Array zu klein ausgelegt. Da kam es dann beim zeichnen des Button Text zu Problemen. Bedingt durch die Events Probleme die bei meinem Ownerdraw FileDialog auftraten muss ich nun die ganzen Controls Original belassen und diese Hooken. Button und der Button der Combo sind fertig der Rest kommt noch. Hab ja sonst nix zu tun. gruss |
AW: StringReplace verursacht AV
Kann es sein das StringReplace intern einen Fehler verursacht.
Also die Funktion selbst? Folgendes Szenario.
Delphi-Quellcode:
CTRL_STATE = (Normal, Focus, Down, Disabled);
Delphi-Quellcode:
TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase);
CTRL_STATE = 0..3 TReplaceFlags = 0..1 Ich erstelle mir jetzt einen ImageBuffer.
Delphi-Quellcode:
0..3 ist das jeweilige Bitmap im ImageStrip. (Ich hoffe ihr wist was gemeint ist.)
SetLength(TmpHdc, 3);
SetLength(hBmp, 3); SetLength(hBmpOld, 3); Wnd := GetDesktopWindow; DC := GetWindowDC(Wnd); for IntI := 0 to 3 do begin 0 wäre dann normal 1 Focus usw.. Eigentlich korrekt. Aber wenn ich nun das Programm starte bekomme ich in der Zeile
Delphi-Quellcode:
Caption := StringReplace(Caption, '&', '', [rfReplaceAll]);
einen AV das seltsame ist in einer ganz anderen Unit die eigentlich nichts mit dieser zu tun hat wo der ImageBuffer erstellt wird. Die Procedure für den Buffer ist privat deklariert in einer eigenen Classe außerhalb da wo StringReplace den Fehler verursacht. Ändere ich nun die länge also erhöhe sie mit 1
Delphi-Quellcode:
Ist das Problem verschwunden.. Warum?
SetLength(TmpHdc, 4);
SetLength(hBmp, 4); SetLength(hBmpOld, 4); Was hat StringReplace mit der Dimension meines Array zu tun das eigentlich korrekt sein sollte. Ich habe ja keine 5 sondern nur 4 Bilder aneinanderhängend im ImageStrip. also 0..3 Also! Was hat StringReplace mit der Dimension meines Array zu tun? Das auch noch Privat in einer ganz anderen Classe definiert ist. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 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 by Thomas Breitkreuz