AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Delphi7 mit nur einer Unit Unicode fähig machen

Ein Thema von derMischka · begonnen am 10. Jun 2013 · letzter Beitrag vom 22. Okt 2019
Antwort Antwort
querter

Registriert seit: 19. Apr 2008
30 Beiträge
 
#1

AW: Delphi7 mit nur einer Unit Unicode fähig machen

  Alt 4. Jul 2016, 19:16
Hallo somby

in TRichEdit funktioniert FindText() nicht mehr ... gibt immer -1 zurück ...

TCustomRichEdit.FindText arbeitet intern mit PChar und TFindTextA ... wie bekomme ich das so umgebogen ... dass FindText mit PWideChar und TFindTextW arbeiten?!?

ich mach's jetzt erst einmal so ... aber schön ist es nicht ...
FindText(WideStringToUtf8(sW), FoundAt, ToEnd, []); Hast Du eine Idee ...
... als es wieder zu deaktivieren?!
  Mit Zitat antworten Zitat
somby

Registriert seit: 21. Jun 2016
12 Beiträge
 
#2

AW: Delphi7 mit nur einer Unit Unicode fähig machen

  Alt 5. Jul 2016, 07:26
Hallo Delphi-Fans,
bitte entschuldigt, aber es funktioniert noch einiges nicht
an RichEdit, z.B. FindText. Bin feste am wirken.
Das Problem ist z.B. das das RichEdit-Control 2.0 anstelle
eines CrLf nur noch ein Cr verwendet. So muß bei der Konvertierung
von Widestring->Utf8 und umgekehrt das berücksichtigt werden.
Melde mich wieder, wenn ichs habe.
Gruß
somby
  Mit Zitat antworten Zitat
somby

Registriert seit: 21. Jun 2016
12 Beiträge
 
#3

AW: Delphi7 mit nur einer Unit Unicode fähig machen

  Alt 7. Jul 2016, 09:29
So es ist wieder mal soweit.
Einige Fehler wurden in oWinApiUnicode.pas
bzgl. TRichEdit-Control noch behoben.
So funktioniert jetzt:
..lines.Add, ..lines.Insert, ..FindText
Falls ihr noch einige Fehler entdeckt, bzw. Ergänzungen habt,
bitte melden.
Gruß somby
Angehängte Dateien
Dateityp: zip oWinApiUnicode.zip (17,4 KB, 22x aufgerufen)
  Mit Zitat antworten Zitat
somby

Registriert seit: 21. Jun 2016
12 Beiträge
 
#4

AW: Delphi7 mit nur einer Unit Unicode fähig machen

  Alt 7. Jul 2016, 14:26
Hallo querter,
da jetzt FindText() im RichEdit funktionert,
mußt du einfach den Suchtext als Utf8-Text eingeben,
du bekommst dann die Position im gesamten Utf8-Text geliefert
(beginnend ab 0).
Gruß somby
  Mit Zitat antworten Zitat
somby

Registriert seit: 21. Jun 2016
12 Beiträge
 
#5

AW: Delphi7 mit nur einer Unit Unicode fähig machen

  Alt 12. Jul 2016, 15:05
Meine vorerst letzte Version,
bitte melden, wenn Ihr fehler entdeckt.
Gruß somby
Angehängte Dateien
Dateityp: zip oWinApiUnicode.zip (17,3 KB, 30x aufgerufen)
  Mit Zitat antworten Zitat
derMischka

Registriert seit: 21. Jun 2007
Ort: Dresden
32 Beiträge
 
Delphi 7 Professional
 
#6

AW: Delphi7 mit nur einer Unit Unicode fähig machen

  Alt 15. Aug 2016, 16:09
Hi Somby,

habe mal meine aktuelle Version mit deiner gemerged.
Ich hoffe, dabei keine Fehler gemacht zu haben.

Als wesentliche Neuerung habe ich CLASS_UNICODE_EXT eingeführt (damit es mit vorher Registrierten Classes keine Probleme gibt).
Des Weiteren sammle ich alle registrierten W-Classes in eine StringList gesammelt.
Beim Finalisieren werden diese explizit unregistered (Hat bei mir DLL-Probleme gelöst).

der Mischka
Angehängte Dateien
Dateityp: zip oWinApiUnicode.zip (18,3 KB, 22x aufgerufen)
  Mit Zitat antworten Zitat
somby

Registriert seit: 21. Jun 2016
12 Beiträge
 
#7

AW: Delphi7 mit nur einer Unit Unicode fähig machen

  Alt 17. Aug 2016, 09:23
Hallo "derMischka",
schön, dass du wieder mal an der Unit oWinApiUnicode.pas
gearbeitet hast. Zu deiner Version habe ich auch noch
einiges ergänzt:

- TextOut
- PeekMessage
- GetTextExtentExPoint

Beim testen mit einer kyrillischen Bildschirmtastatur
fiel mir auf, dass keine WideChar-Tastencodes ankamen.
Das lag daran, dass Delphi7 in der Klasse TWinControl der
Unit Controls in der Botschaft WM_CHAR die protected Funktion
DoKeyPress aufruft, die wiederum KeyPress aufruft und hier das
WideChar auf Char beschneidet.
Um das zu umgehen, wurde in der Klasse TWinControl die Botschaft
WM_CHAR durch eine Hilfsklasse TChWinControl neu belegt.
Bei der Verwendung von OnKeypress kann, obwohl nur
ein Char übergeben wird, trotzdem das WideChar abgefragt werden:
z.B.:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var UniKey: WideChar absolute Key;
begin
....
end;

Ich nutze oWinApiUnicode schon seit einiger Zeit mit gutem
Erfolg.

Noch eine kleine Bemerkung betrifft meine vielleicht eigenartige
Blockstruktur im Quellcode (begin am ende usw.), z.B.:

if ... then begin
...
end;


Ich nutze diese
Struktur schon seit vielen Jahren mit gutem Erfolg, da diese Struktur im Gegensatz
zu
if ... then
begin
...
end;
eine sehr gute Blocklesbarkeit garantiert. Also bitte nicht ärgern wenn das
für dich und die anderen Nutzer etwas merkwürdig erscheint.

Viele Grüße
Somby
Angehängte Dateien
Dateityp: zip oWinApiUnicode.zip (17,8 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 03:23 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