AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Set of WideChar (TDynamicCharSet)
Thema durchsuchen
Ansicht
Themen-Optionen

Set of WideChar (TDynamicCharSet)

Ein Thema von himitsu · begonnen am 9. Dez 2009 · letzter Beitrag vom 22. Apr 2010
 
Benutzerbild von kroimon
kroimon

Registriert seit: 21. Apr 2004
24 Beiträge
 
RAD-Studio 2010 Arc
 
#3

Re: Set of WideChar (TDynamicCharSet)

  Alt 8. Jan 2010, 23:41
Zur Speicherverwaltung: Ah ja, hatte übersehen, dass du ja mit records arbeitest

Zitat von himitsu:
und im Prinzip geht auch sowas:
Delphi-Quellcode:
if TDynamicCharSet(['#', '$']).Contains('a') then
  beep;
if TDynamicCharSet('#$a..z梣儿梈棅棋㌇').Contains('a') then
  beep;
Hm, ja leider eben nicht...
Delphi 2010. Neues VCL-Projekt. TButton hinzugefügt. OnClick:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  TDynamicCharSet(['#', '$']).Contains('$');
end;
Start. Button drücken. Freuen:
Code:
Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 00418441 in Modul 'Project1.exe'. Lesen von Adresse 0574C08C' aufgetreten.

Stack-Trace:
DynSet.TDynamicCharSet.Fill('#$', nil)
DynSet.TDynamicCharSet.Fill(['#'..'$'], nil)
DynSet.TDynamicCharSet.&op_Explicit(['#'..'$'])
Unit1.TForm1.Button1Click(???)
Bis TDynamicCharSet.Fill(Const S: RawByteString; Encoding: TEncoding = nil) geht also alles gut.
Dort wird dann CheckEncode(nil) aufgerufen, wobei Encoding auf _Encoding gesetzt wird, was hier merkwürdigerweise nicht genullt ist, sondern zufällige Werte beinhaltet: (FIsSingleByte:True; FMaxCharSize:1589654467)
Die nächste Zeile (229) crasht dann erwartungsgemäß.

Scheinbar wird bei diesem expliziten Cast das Record nicht mit Nullen gefüllt
Edit: grade nochmal im Debugger überprüft: Beim Aufruf von &op_Explicit ist Result._Encoding schon direkt zu Beginn nicht nil, sondern mit (FIsSingleByte:True; FMaxCharSize:1589654467) gefüllt...

Könnte das noch jemand unter Delphi 2010 testen und bestätigen bitte?
~Stefan
  Mit Zitat antworten Zitat
 


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 01:18 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