AGB  ·  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 19. Okt 2017
Antwort Antwort
Seite 4 von 6   « Erste     234 56   
Delphi-Laie

Registriert seit: 25. Nov 2005
1.337 Beiträge
 
Delphi 10.1 Berlin Starter
 
#31

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

  Alt 24. Mai 2016, 15:19
Leute, was habt Ihr für Zauberdelphis, daß Ihr mit der Unit zurechtkommt?
..

{$ifdef CamSpy}oCamSpyMem,{$endif}
ganz oben in der Unit steht

{$define CamSpy}  //my own logging
auskommentieren und gut ist?!?
Schön wäre es. Das hatte ich auch schon probiert, jedoch vergaß ich, das mit aufzulisten.

Dann scheitert es (erstmalig) an

ss := AnsiToUtf8(ss); (Delphi 4 und 5)

bzw. an

addlog('Exception in DispatchMessageUniCode(MsgNum='+inttostr(lpMsg.message)+') '+e.ClassName+' '+e.Message,cst_Exception); (ab Delphi 6).
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.337 Beiträge
 
Delphi 10.1 Berlin Starter
 
#32

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

  Alt 24. Mai 2016, 15:30
Mit folgenden Änderungen ist die Unit bei Delphi 6 & 7 compilierbar:

Zeile 30: //{$define CamSpy} //my own logging

Zeile 1719: addlog('Exception in DispatchMessageUniCode(MsgNum='+inttostr(lpMsg.mes sage)+') '+e.ClassName+' '+e.Message{,cst_Exception});//letzter Parameter zuviel?

Zeile 1746: Result := windows.GetCharacterPlacementW(DC,@wsbuf[0],boolean(ii),boolean(p4),p5,p6);//mit Boolean-Konvertierung klappt es

Bei Delphi 7 kommen zudem unzählige Warnungen.

Geändert von Delphi-Laie (24. Mai 2016 um 15:52 Uhr)
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.337 Beiträge
 
Delphi 10.1 Berlin Starter
 
#33

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

  Alt 24. Mai 2016, 15:51
Bei Turbo-Delphi muß es ab Zeile 1740 so aussehen:

Delphi-Quellcode:
function GetCharacterPlacementUnicode(DC: HDC; p2: PChar; p3, p4: Integer;
  var p5: TagGCP_ResultsW; p6: cardinal): cardinal; stdcall;
var wsbuf : TDynWSbuf;
    ii : integer;
begin
  ii := ConvertToWideChar(p2,p3,wsbuf,false);
  Result := windows.GetCharacterPlacementW(DC,@wsbuf[0],ii,p4,p5,p6);
end;
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.020 Beiträge
 
Delphi 7 Professional
 
#34

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

  Alt 24. Mai 2016, 16:40

Schön wäre es. Das hatte ich auch schon probiert, jedoch vergaß ich, das mit aufzulisten.
ah.. und ich habe mich schon gewundert....
  Mit Zitat antworten Zitat
derMischka

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

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

  Alt 30. Mai 2016, 11:30
Leute, was habt Ihr für Zauberdelphis, daß Ihr mit der Unit zurechtkommt?
..

{$ifdef CamSpy}oCamSpyMem,{$endif}
ganz oben in der Unit steht

{$define CamSpy}  //my own logging
auskommentieren und gut ist?!?
Hätte nicht gedacht, dass mein Logging so viele Probleme bereitet...

Ihr müsst einfach die {$define CamSpy} Zeile auskommentieren

der Mischka
  Mit Zitat antworten Zitat
somby

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

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

  Alt 21. Jun 2016, 10:18
Habe die Unit oWinApiUnicode.pas noch ein wenig modifiziert, um das
TRichEdit-Control Unicodefähig zu machen. Es wird einfach die
Subclass-Abfrage GetClassInfo und GetClassInfoEx modifiziert,
um die richtigen Windows-Prozeduren zu erhalten
Angehängte Dateien
Dateityp: pas oWinApiUnicode.pas (52,9 KB, 19x aufgerufen)
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.977 Beiträge
 
Delphi 7 Professional
 
#37

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

  Alt 21. Jun 2016, 18:37
Manchmal möchte man an kleine Wunder glauben ...
Diese RichEdit-Unterstützung wäre genau das Richtige für meinen alten IniViewer - den ich immer noch regelmäßig nutze.

Also schnell ein Test bereitet: Form+Richedit+...
Delphi-Quellcode:
procedure TfoTest05.FormShow(Sender: TObject);
begin
 RE.Lines.LoadFromFile('c:\program files\desktop.ini'); // << UNICODE
 //
 // Exception EReadError in Modul test05.exe bei 000181EB
 // Fehler beim Lesen von RE.Lines.Strings: Fehler bei Einfügen von RichEdit-Zeile
 //
 // :-(
end;
.. so ganz funktioniert das mit der Modifikation leider doch nicht?!
Gruß Ralph
Ralph
  Mit Zitat antworten Zitat
somby

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

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

  Alt 27. Jun 2016, 10:19
Hallo Delphi-Mitstreiter,
habe in der letzten Version (24.05.2016) von oWinApiUnicode.pas einige Fehler beseitigt
und einige Funktionen hinzugefügt:
TToolbar - Control funktioniert,
TRichEdit - Control funktioniert (hier war wichtig, dass im WideString-Modus der Klassenname anders ist),
TListView - Control funktioniert,
Sowohl in TListView und TTreeView funktioniert der Label-Edit
Funktion SetClipboardData wurde hinzugefügt.

Wichtig: einige Messages (z.B. SB_SETTEXT und TB_ENABLEBUTTON, beide WM_USER+1)
besitzen gleiche WM_USER-Werte, hier muß duch den Klassenname
unterschieden werden.

Hallo Mischka, vielen Dank für dieses wunderbare Tool. Ich hoffe wir können
das noch um einiges erweitern.
In der Anlage meine geänderte Variante.

Gruß
somby
Angehängte Dateien
Dateityp: zip oWinApiUnicode.zip (14,9 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
derMischka

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

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

  Alt 27. Jun 2016, 11:22
Hallo somby,

schön zu hören, dass mal einer die Unit nutzt und nicht mit "das kann gar nicht gehen" kommt!

Werde deine Änderungen bei Gelegenheit mal mit sichten/testen/übernehmen.

Bin bloss grad mit Umstellung auf Free Pascal beschäftigt.

der Mischka
  Mit Zitat antworten Zitat
somby

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

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

  Alt 27. Jun 2016, 11:31
Hallo taaktaak,
wenn du die Richedit-Funktion .Lines.LoadFromFile
verwendest, muß die Datei auch ein RTF-Format haben.
Probiere z.B.:
-In Word Unicode-Zeichen eintragen (mit Hilfe der Zeichentabelle)
-Speichern als RTF-Datei.
Und dann diese Datei mit Lines.LoadFromFile
ins Control laden.
Gruß
Somby
  Mit Zitat antworten Zitat
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:

Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2017 by Daniel R. Wolf