Delphi-PRAXiS
Seite 4 von 7   « Erste     234 56     Letzte » 

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi7 mit nur einer Unit Unicode fähig machen (https://www.delphipraxis.net/175267-delphi7-mit-nur-einer-unit-unicode-faehig-machen.html)

Delphi-Laie 24. Mai 2016 15:19

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

Zitat von Lemmy (Beitrag 1338830)
Zitat:

Zitat von Delphi-Laie (Beitrag 1338827)
Leute, was habt Ihr für Zauberdelphis, daß Ihr mit der Unit zurechtkommt?
..

Delphi-Quellcode:
{$ifdef CamSpy}oCamSpyMem,{$endif}

ganz oben in der Unit steht

Delphi-Quellcode:
{$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

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

bzw. an

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

Delphi-Laie 24. Mai 2016 15:30

AW: Delphi7 mit nur einer Unit Unicode fähig machen
 
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.

Delphi-Laie 24. Mai 2016 15:51

AW: Delphi7 mit nur einer Unit Unicode fähig machen
 
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;

Lemmy 24. Mai 2016 16:40

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

Zitat von Delphi-Laie (Beitrag 1338832)

Schön wäre es. Das hatte ich auch schon probiert, jedoch vergaß ich, das mit aufzulisten.

ah.. und ich habe mich schon gewundert....

derMischka 30. Mai 2016 11:30

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

Zitat von Lemmy (Beitrag 1338830)
Zitat:

Zitat von Delphi-Laie (Beitrag 1338827)
Leute, was habt Ihr für Zauberdelphis, daß Ihr mit der Unit zurechtkommt?
..

Delphi-Quellcode:
{$ifdef CamSpy}oCamSpyMem,{$endif}

ganz oben in der Unit steht

Delphi-Quellcode:
{$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

somby 21. Jun 2016 10:18

AW: Delphi7 mit nur einer Unit Unicode fähig machen
 
Liste der Anhänge anzeigen (Anzahl: 1)
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

taaktaak 21. Jun 2016 18:37

AW: Delphi7 mit nur einer Unit Unicode fähig machen
 
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

somby 27. Jun 2016 10:19

AW: Delphi7 mit nur einer Unit Unicode fähig machen
 
Liste der Anhänge anzeigen (Anzahl: 1)
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

derMischka 27. Jun 2016 11:22

AW: Delphi7 mit nur einer Unit Unicode fähig machen
 
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

somby 27. Jun 2016 11:31

AW: Delphi7 mit nur einer Unit Unicode fähig machen
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:57 Uhr.
Seite 4 von 7   « Erste     234 56     Letzte » 

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