AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

StringReplace verursacht AV

Ein Thema von EWeiss · begonnen am 7. Okt 2016 · letzter Beitrag vom 11. Okt 2016
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
EWeiss
(Gast)

n/a Beiträge
 
#1

StringReplace verursacht AV

  Alt 7. Okt 2016, 18:43
Delphi-Quellcode:
var
  Txt: PWideChar;
  tmpTxt: WideString;

Txt := PWideChar(SkinEngine.GetCTLText(PDis.hwndItem));
tmpTxt := StringReplace(string(Txt), '&','', [rfReplaceAll]);
txt Rückgabe ist "Ö&ffnen"
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
  Mit Zitat antworten Zitat
Jim Carrey
(Gast)

n/a Beiträge
 
#2

AW: StringReplace verursacht AV

  Alt 7. Okt 2016, 18:48
Ich habe bei mir mal folgendes getestet und ich habe keine AV bekommen:
Delphi-Quellcode:
var
 Txt: PWideChar;
 tmpTxt: WideString;
begin
 Txt := 'Ö&ffnen';
 tmpTxt := StringReplace(string(Txt), '&', '', [rfReplaceAll]);
end;
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.088 Beiträge
 
Delphi 12 Athens
 
#3

AW: StringReplace verursacht AV

  Alt 7. Okt 2016, 18:50
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.


Delphi-Referenz durchsuchenStripHotkey
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 7. Okt 2016 um 18:53 Uhr)
  Mit Zitat antworten Zitat
Jim Carrey
(Gast)

n/a Beiträge
 
#4

AW: StringReplace verursacht AV

  Alt 7. Okt 2016, 18:56
Frage neben bei:
was macht StripHotkey anders als StringReplace?
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#5

AW: StringReplace verursacht AV

  Alt 7. Okt 2016, 19:06
was macht StripHotkey anders als StringReplace?
StripHotkey entfernt nicht nur die im Westen üblichen Ampersands sondern auch die in Asien üblichen Hotkeys in Klammern, z.B. "Open (O)".

Grüße
Dalai
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: StringReplace verursacht AV

  Alt 7. Okt 2016, 19:32
Aber warum nur? Woher soll der Nutzer denn wissen, welches der Hotkey für die Schaltfläche ist?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.088 Beiträge
 
Delphi 12 Athens
 
#7

AW: StringReplace verursacht AV

  Alt 7. Okt 2016, 19:47
Und es lässt geqoutede Hotkeys dequoted zurück.

&Hallo && Tschüss
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: StringReplace verursacht AV

  Alt 7. Okt 2016, 19:59
Aber warum nur? Woher soll der Nutzer denn wissen, welches der Hotkey für die Schaltfläche ist?
Weil er in meiner DrawText Funktion es so zeichnet wie angegeben.

Ohne das entfernen steht auf meinen Button der Text so "Ö&ffnen"
Warum GDI Plus das nicht erkennt da fragst du mich zu viel.

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: StringReplace verursacht AV

  Alt 7. Okt 2016, 20:01
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.


Delphi-Referenz durchsuchenStripHotkey
Wird gemacht

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

Geändert von EWeiss (11. Jul 2019 um 16:45 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: StringReplace verursacht AV

  Alt 10. Okt 2016, 12:22
Kann es sein das StringReplace intern einen Fehler verursacht.
Also die Funktion selbst?

Folgendes Szenario.

CTRL_STATE = (Normal, Focus, Down, Disabled);
TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase);

CTRL_STATE = 0..3
TReplaceFlags = 0..1

Ich erstelle mir jetzt einen ImageBuffer.

Delphi-Quellcode:
  SetLength(TmpHdc, 3);
  SetLength(hBmp, 3);
  SetLength(hBmpOld, 3);

  Wnd := GetDesktopWindow;
  DC := GetWindowDC(Wnd);

  for IntI := 0 to 3 do
  begin
0..3 ist das jeweilige Bitmap im ImageStrip. (Ich hoffe ihr wist was gemeint ist.)
0 wäre dann normal
1 Focus usw..

Eigentlich korrekt.

Aber wenn ich nun das Programm starte bekomme ich in der Zeile
  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:
SetLength(TmpHdc, 4);
SetLength(hBmp, 4);
SetLength(hBmpOld, 4);
Ist das Problem verschwunden.. Warum?
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:30 Uhr.
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