Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   TNT-Unicode-Controls-Hack for Turbo Delphi (and other) (https://www.delphipraxis.net/141895-tnt-unicode-controls-hack-turbo-delphi-other.html)

himitsu 18. Okt 2009 20:11


TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Liste der Anhänge anzeigen (Anzahl: 4)
Moin Moin,

ich wollte nur mal einen winzigen Hack vorstellen, welcher "indirekt" z.B. im Turbo Delphi die TNT Unicode Controls v2.3.0 einbindet.

[achtung]
Wenn es Probleme gibt, z.B.:
Zitat:

{$IFDEF COMPILER_10_UP}
* {$MESSAGE FATAL 'Do not refer to TntWideStrings.pas. It works correctly in Delphi 2006.'}
{$ENDIF}

und/oder womöglich auch noch mit mehreren Delphiversionen gearbeitet wird,

dann bitte erstmal das Projekt neu erzeugen und prüfen, ob es nicht an den Compilern liegt.
z.B. siehe hier http://www.delphipraxis.net/internal...126663#1126663

D2006/TDE nutzt z.B. einen erweiterten D7-Compiler und diese sind in den DCUs soweit "leider" kompatibel zueinander, so daß dort die Units nicht automatisch neu kompilert werden und es somit zum einem Versionskonflikt kommen könnte.
[/achtung]


Man bastelt einfach im TD seine GUI zusammen und bindet dann nur noch die entsprechenden TNT-Units in seine Formular-Unit ein ... und/oder wo es sonst noch nötig ist.

z.B. die beiliegende Demo:

* ohne die eingebundenen Units ist alles ANSI ... halt wie gewohnt

* sobald aber die TntHack*-Dateien eingebunden sind,
in der Demo sind es diese
Delphi-Quellcode:
uses ...
  TntHackWindows, TntHackSysUtils, TntHackClasses, TntHackGraphics,
  TntHackControls, TntHackForms, TntHackDialogs, TntHackStdCtrls, TntHackCheckLst;

werden die entsprechenden Delphi-VCL-Komponenten beim "Kompilieren" ersetzt.

siehe Anhang:
- oben = normal
- unten = mit TNT-Hack

* einfach Regel: sobald eine XYZ in den Uses steht und einen gleichnamige TntHackXYZ existiert, dann diese einfach mit in der Uses eintragen (nicht austauschen! ... nur anhängen)



Genauer gesagt, werden die Runtime-Typen überschrieben und es werden dann vom VCL-Form-Loader die TNT-Komponenten geladen.

Vorteil gegenüber dem "normalen" Vorgehen zum Einbinden externer Komponenten ist,
daß man keine Komponenten dynamisch erstellen muß, sondern einfach die Standardkomponenten der VCL nutzt,
um sich die GUI zusammenzuklicken und diese dann später autmatisch ersetzt werden.
> das wird vorallem auch dadurch gefördert, daß die TNTs vorwiegend "nur" ein Unicode-Port der VCL sind.




Achtung: die TntHack*-Dateien müssen natürlich immer als letztes in der Usesklausel stehen, da sonst die "gehackten" Komponenten von der VCL überschrieben werden und nicht andersrum (wie es ja gewollt wäre)


Für alle, welche die TNTs kennen:
Hier müssen die gleichnamigen TntHack*-Dateien verwendet werden und nicht die Tnt*.
Es können aber auch "beide" eingebunden werden, solange die TntHack* ebenfalls als Letztere drinnen steht.



Die Anhänge sind zwar in Delphi 7 erstellt und kompiliert, sollten aber (hoffentlich) auch für die Turbos und andere Versionen bis Delphi 2006/2007 funktionieren.

Es muß auch nichts installiert werden.
> nur entpacken und die Suchpfade in den Projektoptionen angeben



Zur Design-Time sind alle Komponenten noch ANSI
und nach dem Kompilieren sind sie durch die TNTs ersetzt.

Dieses bedeutet aber auch, daß einiges nicht richtig funktiniert.
z.B. das Maskenzeichen von TEdit/TTntEdit ist in unterschiedlichen Properties gespeichert und würe demnach nicht vom OI übernommen.



[info]
es ist noch nicht alles der TNTs in den Hack übertragen, bzw. dahin umgeleitet,
aber die vorhandenen Komponenten sollten alle drinnen sein.

[edit 19.10.2009 17:45] Aufgrund einiger Fehler (siehe #2) wurden alle Anhänge ausgetauscht
[update 20.10.2009 23:45] kleine Änderungen und vorallem bezüglich #2 nochmal alles durchgesehn

himitsu 19. Okt 2009 14:19

Re: TNT-Unicode-Controls-Hack for Turbo Delphi
 
Ups, es sind gestern leider, beim Aufräumen, ein paar "alte" Dateien mit reingerutsch :oops:

Also falls sich wer wundert, daß wwar die Demo läuft, aber einiges Anderes nicht, wenn man dieses verwendet.
Ich denke mal die "vielen" Compiler-Warnungen und -Fehler sprechen in diesem Fall für sich.

Wird aber etwas dauern .. muß erstmal sehn was nun wie und wo drinsteckt :wall:

himitsu 19. Okt 2009 16:51

Re: TNT-Unicode-Controls-Hack for Turbo Delphi
 
Soooo, es läßt sich immerhin wieder kompilieren,

auch wenn da wohl immernoch etwas vertauscht ist
z.B. in der TntHackFormatStrUtils.pas ist nicht das drinnen, was da drinnen sein sollte,
aber dafür brauch ich dann mal etwas Ruhe, um da genauer nachzusehn.


Ansonsten gibt es oben natürlich erstmal die neuen Downloads,
es gibt jetzt ein schöneres Bild, wo man hoffentlich mehr erkennen kann
und ganz unten wurde noch ein neues Edit integriert, wo der Vererbungspfad von TEdit drinsteht.
Edit2 meint zu TEdit folgendes
mit den TNTs:
TEdit TTntEdit TTntCustomEdit TCustomEdit TWinControl TControl TComponent TPersistent TObject

normal:
TEdit TCustomEdit TWinControl TControl TComponent TPersistent TObject

ich glaub es ist ersichtlich genug, was da passiert ist :angel:

himitsu 20. Okt 2009 22:54

Re: TNT-Unicode-Controls-Hack for Turbo Delphi
 
Hab nun auch die letzte Unit durchgesehn.

An Objekten/Klassen/Typen sollte alles durchgeschleift worden sein,
auch dürfte jetzt alles in den richtigen Units gelandet sein.

Von der TntActnList und TntControls wurden die Klassen/Typen übernommen, aber es fehlen noch einige Funktionsweiterleitungen,
ebenso ist nichts in TntHackSysUtils vorhanden.

Aber da dieses aktuell nur Funktionen/Prozeduren betrifft, welche man auch erhält, wenn man zusätzlich das jeweilige Original der TNTs einbindet, hat dieses für mich erstmal eine "niedrigere" Priorität.


[add]
Ein bekanntes Problem gibt es allerdings schonmal ... zumindestens mit Delphi 7.
Ab und zu meint Delphi beim Kompilieren (F9) "Klasse xyz ist nicht registriert".
Vermutlich kommt da manchmal etwas durcheinander.

Um dieses zu beheben braucht einfach nur alles (das Projekt) geschlossen und neu geöffnet zu werden.


[update] siehe oben

martinf16 5. Dez 2009 22:57

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Ich weiß nicht, ob dieser Thread hierfür auch gedacht ist, aber ich hab noch einen kleinen Bug Report:

Benutzt man eine Virtual List View - also zum Beispiel folgendes Beispiel:

Delphi-Quellcode:
//ListView mit OwnerData = true und im OnData beispielsweise folgendes:

item.caption:=inttostr(item.index);

kommt es leider zu dem Fehler, dass Item.Index immer Null ist. Irgendwie scheint die Information bei dem Hack verloren zu gehen. Wenn einer einen Lösungsansatz hätte, wäre ich sehr dankbar.

himitsu 6. Dez 2009 10:19

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Hättest du da mal ein klitzekleines Testprogramm zur Hand?



Wenn es daran liegt, daß die "Elterkomponente" nur teilweise ersetzt wurde, dann könnte ich vermutlich was machen.

Aber wenn es daran liegt, daß die Virtual List View nicht mit einem Unicode-Windows-Control klarkommt, dann wird sich hier (seitens meines TNT-Hacks) nichts machen lassen und es müßte stattdessen an der VLV etwas geändert werden, wenn diese möglich sein sollte.
Oder man kann dann leider nicht Beides zusammen verwenden.

martinf16 6. Dez 2009 12:36

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Das Testprogramm wäre genau das, was ich gerade schon geschrieben habe. Also eine ListView auf die Form packen, OwnerData = true setzen und in das OnData einfach reinschreiben: item.caption:=inttostr(item.index); Und dann halt items.count auf irgendeine Zahl setzen. Das wäre alles.

Was passiert ist, dass item.index immer 0 ist und entsprechend in der ListView nur als Eintrag 0 steht bei jedem Item.

Meine erste Überlegung war, dass irgendeine Eigenschaft bei den TNTs nicht richtig mitgenommen wird und daher habe ich dieselbe ListView als TNT ListView im OnCreate erstellen lassen und wieder das Ereignis item.caption:=inttostr(item.index) zugewiesen und da erschienen in der ListView die Einträge 0, 1, 2 usw.. Also vermute ich mal, dass irgendetwas in den Hacks nicht mitgenommen wird, denn sobald die Hacks in den Uses stehen funktioniert es nicht mehr und es werden nur noch Nullen angezeigt.

Ich habe mir die entsprechende Hack Datei für die ComCtrls schon durchgesehen, aber ich wüsste nicht was man da ändern könnte, ich denke du als Entwickler hast da mehr Ahnung von, was da genau passiert.

Reicht dir das an Informationen?!

himitsu 6. Dez 2009 12:52

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Die TNTs selber hab ich ja nicht entwickelt ... nur die Umleitung.
Und aktuell wüße ich auch nicht, warum sowas NUR Anhand der kleinen Umleitung nicht gehn soll.

OK, ich war wegen des Virtuel List View erstmal irgendwie in Richtung Virtual TreeView geraten.

nja, dann werd ich mal versuchen rauszubekommen, was da nicht will :?

[edit]
also bei mir geht es und es werden die Indize angezeigt :gruebel:
(getestet in D2006 und D7)
Delphi-Quellcode:
Unit Unit1;

Interface
  Uses SysUtils, Classes, Controls, Forms, ComCtrls,
    TntHackSysUtils, TntHackClasses, TntHackControls, TntHackForms, TntHackComCtrls;

  Type TForm1 = Class(TForm)
      ListView1: TListView;
      procedure ListView1Data(Sender: TObject; Item: TListItem);
      procedure FormCreate(Sender: TObject);
    Private
    Public
    End;

  Var Form1: TForm1;

Implementation
  {$R *.dfm}

  Procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
    Begin
      Item.Caption := IntToStr(Item.Index);
    End;

  Procedure TForm1.FormCreate(Sender: TObject);
    Begin
      ListView1.Items.Add.Caption := 'a';
      ListView1.Items.Add.Caption := 'b';
      ListView1.Items.Add.Caption := 'c';
      ListView1.Items.Add.Caption := 'd';
      //ListView1.OwnerData := True; im OI gesetzt
    End;

End.

martinf16 6. Dez 2009 13:31

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Du brauchst dich nicht mehr zu bemühen, deine Umleitung arbeitet nach wie vor perfekt. Ich habe den Fehler inzwischen entdeckt. Ich habe noch einmal ein Beispielprogramm machen wollen, dabei allerdings deine Original TNT-Sources verwendet, die du auch hier angehängt hast - und damit hat es richtig funktioniert.

Ich hatte leider eine andere Version der TNTs, wo in den TNTs die Eigenschaft FIndex und eine eigene Get-Routine drin stand, die natürlich alles überschrieben hat. Als ich die raus hatte ging alles wieder!

Tut mir leid, dass ich dir Umstände gemacht habe, aber trotzdem vielen Dank für die Mühe. Falls noch jemand das Problem mit der anderen TNT Version hat, hilft ihm vielleicht dieser Thread weiter. Das interessante bei diesen TNT Version ist, dass alles funktioniert, nur eben nicht die Ersetzung, warum auch immer. Wenn man die ListView zur Laufzeit erstellt geht alles.

himitsu 6. Dez 2009 13:50

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Nja, hier werden erst/NUR an einem gewissen Punkt die Komponenten ersetzt
und zwar ziehmlich "spät" und man muß auch überall die Komponenten ersetzen (z.B. auch in anderen Units, wo man auf diese zugreift, da sonst an diesen Stellen mit einer "falschen" Objektversion kompiliert wird, was dann natürlich zu Problemen führen kann.


Nach dem Test in TDE bin ich auch grade über den blöden Umstand gestoßen, daß TDE den alten D7-Compiler nutzt,
weil leider einige Units nicht neu compiliert wurden (da es dadurch ja kompatible DCU-Versionen sind)

Delphi-Quellcode:
// aus der Unit TntWideStrings

{$IFDEF COMPILER_10_UP}
  {$MESSAGE FATAL 'Do not refer to TntWideStrings.pas. It works correctly in Delphi 2006.'}
{$ENDIF}
tja, plötlich meldete mir diese Nachricht, daß ich die Unit nicht mehr versenden sollte, obwohl ich sie doch garnicht averwendete (siehe Beispiel weiter oben)

nja, die Lösung war, daß eine unter D7 compilierte Unit natürlich entsprechend seiner Compilerversion diese Unit einbinden wollte und TDE jetzt (wegen gleicher CDU-Verionen) diese Unit einfach nicht mit der anderen Compilerverion neu kompilierte :wall:

Garfield 8. Dez 2009 05:53

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Bei mir sieht es etwas anders aus als in Deinem Bild.

himitsu 8. Dez 2009 07:12

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hast du in deinem System auch die nötigen Sprachen/Schriftarten installiert?

Systemsteuerung > Regions- und Sprachoptionen > Sprachen > Zusätzliche Sprachoptionen
für dieses Beispiel werden vorwiegend die ostasiatischen Sprachen benötigt (siehe Anhang),
welche bis Win XP standardmäßig nichts installiert werden.

Garfield 8. Dez 2009 08:41

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Zitat:

Zitat von himitsu
... welche bis Win XP standardmäßig nichts installiert werden.

Genau so ist das bei mir.

Ich habe in das Example ein TEdit, einen TButton und einen TOpenDialog eingefügt und eine Datei in einem Ordner mit griechischen Buchstaben geöffnet. Der erste Test funktioniert. Prima Arbeit!

himitsu 8. Dez 2009 08:56

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Zitat:

Zitat von Garfield
Genau so ist das bei mir.

Dann isses aber schon komisch ... könnte natürlich auch sein, daß irgendwas mit den Schwiftarten nicht klappt und irgendeine Schriftart genommen wurde, welche diese Zeichen nicht darstellen kann. :gruebel:
Hatte mir gestern meine XP SP3-VM inkl. dem ostasiatischen Zeugs ganz frisch installiert und da läuft die Demo erstmal problemlos.
(solange man die VMs nicht produktiv, sondern nur zum Testen nutzt, dann ist es ohne Hardwarevirtualisierung schon besser ... nach Wechsel der CPU liefen meine VMs nimmer so richtig :wall: )

Zitat:

Zitat von Garfield
Der erste Test funktioniert. Prima Arbeit!

Das ist schonmal gut.
Und Danke. :-D

Garfield 8. Dez 2009 09:24

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Zitat:

Zitat von himitsu
Zitat:

Zitat von Garfield
Genau so ist das bei mir.

Dann isses aber schon komisch ...

Nee, nee. Es ist noch Standard, also nichts installiert. Kyrillisch und Griechisch gehen ja, mehr ist - zumindest im Moment - nicht notwendig.

Garfield 3. Feb 2010 00:02

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Zitat:

Zitat von himitsu
Man bastelt einfach im TD seine GUI zusammen und bindet dann nur noch die entsprechenden TNT-Units in seine Formular-Unit ein ... und/oder wo es sonst noch nötig ist.

...

in der Demo sind es diese
Delphi-Quellcode:
uses ...
  TntHackWindows, TntHackSysUtils, TntHackClasses, TntHackGraphics,
  TntHackControls, TntHackForms, TntHackDialogs, TntHackStdCtrls, TntHackCheckLst;

Ganz so scheint es nicht zu sein. Beim Compilieren bleibt man in der Unit TntWideStrings hängen:
Delphi-Quellcode:
{$IFDEF COMPILER_10_UP}
  {$MESSAGE FATAL 'Do not refer to TntWideStrings.pas. It works correctly in Delphi 2006.'}
{$ENDIF}
Wenn man dies entfernt, hat man im TEdit und TRichEdit ????????? stehen, im TMemo |||||||||||. Über die Zwischenablage kopiert hierher sind das dann ????????? und Программа.

himitsu 3. Feb 2010 07:56

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Zitat:

Zitat von Garfield
Ganz so scheint es nicht zu sein. Beim Compilieren bleibt man in der Unit TntWideStrings hängen:

Ist auch richtig so, denn ab D2006/TDE soll/darf diese TntWideStrings nicht verwendet werden.
Darum wurde absichtlich dieser Compilerfehler dort eingebaut.

Garfield 3. Feb 2010 08:34

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Dann müsste das in Deinem Hack unterbunden werden!?

Muss mir das mal ansehen:
Zitat:

Zitat von himitsu
nja, die Lösung war, daß eine unter D7 compilierte Unit natürlich entsprechend seiner Compilerversion diese Unit einbinden wollte und TDE jetzt (wegen gleicher CDU-Verionen) diese Unit einfach nicht mit der anderen Compilerverion neu kompilierte :wall:

Ich habe zwar nur die obigen Units eingebunden, aber zuerst unter D7. Mal sehen.

Nachtrag: Das war es. Und das obwohl ich "... erzeugen" zum Kompilieren verwendet hatte. Dummerweise ändert das nichts an den ? und |. :cry:

himitsu 3. Feb 2010 09:11

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Hier macht sich leider der D7-Kompiler im TDE bemerkbar ... jetzt wo du es sagst, fält mir ein, daß ich das bei mir auch mal hatte :wall:

Hmmmm, hab es ja selber in D7 und TDE getestes und da ging's :gruebel:
Welches OS nutzt du denn und ist da auch die nötige Sprachunterstüzung installiert?

Das ||||||||||| könnte darauf hinweisen, daß die verwendete Schriftart diese Zeichen nicht darstellen kann.

Kannst du soeine EXE mal hochladen?

Garfield 3. Feb 2010 10:04

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
:? War falsch, was ich oben geschrieben habe. Ich habe die Warnung gelöscht, damit ich es compilieren konnte.

Wenn ich den Charset auf RUSSIAN_CHARSET ändere, geht es. Ich dachte eigentlich, dass das bei TNT und Widestring nicht notwendig ist.

himitsu 3. Feb 2010 10:11

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Eigentlich müßte es möglich sein.

In der Demo wurde auch ohne Charsets gearbeitet:
http://www.delphipraxis.net/download.php?id=41107 ( Bild aus der #1 )
OK, da ist zwar kein Russisch drin, aber das ist ja vom Prinzip her egal. :gruebel:

Garfield 3. Feb 2010 10:48

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Wie ich früher oben geschrieben hatte, funktioniert die Anzeige des Pfades in einem Edit und Memo. Anscheinend liegt das Problem im anzuzeigenden String bzw. in der Erstellung desselben.

himitsu 3. Feb 2010 10:59

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
@Garfield: Ich mach das jetzt mal öffentlich, damit alle was davon haben.

Er hat mir sein Projekt zugesendet und beim Test ist mir was ganz einfaches, aber leicht zu übersehendes aufgefallen.

Es werden ja nur die Komponenten ausgetauscht, zu welchen die passenden TntHack-Dateien eingebunden wurden, also auch da wo diese Komponente sich befindet.

Die Edits und Memos wurden getauscht, darum funktionierte es dort.
Die ListView war aber nicht getauscht, weswegen sie noch die ANSI-Version war und demnach kein Unicode konnte.

Diese Units wären noch möglich, bzw, fehlten
Zitat:

TntHackExtCtrls, TntHackComCtrls, TntHackGrids, TntHackClipbrd
( die ListView versteckt sich in der TntHackComCtrls )

Als Einfachste ist wirklich:
- alles in Uses kopieren und nochmal hinten dranzuhängen
- dann vor jede Unit "TntHack" davorkopieren
- und dann einfach nur noch alles rauslöschen, was es nicht gibt (OK, und die eine TntWideStrings, welche ab D2006 rummotzt)

PS: Wenn es Probleme gibt, dann kann auch bei den Komponenten mal nachsehn, ob die Schnittstellen mit WideString oder AnsiString arbeiten.
Bei deinem
Delphi-Quellcode:
with lvw_Events.Items.Add
do begin
  Caption := IntTostr(EIT.service_id);
  SubItems.Add(CodeToTime(EITBody.start_time));
  ...
waren Caption und SubItems.Add mit AnsiString und Strg+Mausklick leiteten mich in die ComCtrls, anstatt in die entsprechende TNT-Unit.

Garfield 3. Feb 2010 11:58

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
:oops: Ich habe mir Deine Änderungen angesehen. es fehlten nicht nur Units in den Uses, sondern ich hatte auch die falsche Schriftart. Das heißt, ich hatte sie nicht geändert und auf MS Sans Serif belassen. Damit kommen dann die ||. Mit der von/bei Dir eingestellten Schriftart Tahoma funktioniert es.

Vielen Dank. :thumb:

Garfield 21. Mär 2010 17:06

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Ich bin gerade dabei die Hacks in eine weitere Anwendung einzubauen. In dieser arbeite ich mit Dateien, welche Zeichen anderer Codepages enthalten. Für den TOpenDialog brauchte ich erwartungsgemäß nur die Unit TntHackDialogs einbinden und es funktionierte. Dann sollte es mit ExtractFileDir weitergehen. Anstelle dessen muss man WideExtractFileDir verwenden. Allerdings kann man nicht die TntHackSysUtils verwenden sondern muss direkt TntSysUtils einbinden.

himitsu 21. Mär 2010 23:25

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Joar .... ähhhhh ... hmmmmm ... nja, dieses ist/war vorzugsweise auf die Komponenten (VCL) ausgelegt, da diese ja in Turbo Delphi nicht direkt eingebunden werden können, und es wurden diesbezüglich nur kleinere Unitinhalte und wichtige Stellen geändert/weitergeleitet/überschrieben.

Vorallem die Umleitung von vielen Funktionen ist schon ein bissl aufwändig (also von der Erstellung und Auflistung der Funktionen her, aber mal sehn was sich machen läßt ... also wann und wie schnell ich dazu komm diesbezüglich ein paar zusätzliche Umleitungen einzurichten.

(Bin grad erst heimgekommen und nach 4 Messetagen bin auch noch ganz schön fertig, hab noch viel auszuwerten und zusätzlich auch noch andere Dinge zu erledigen ... parallel zum Beginn an einer neuen Arbeitsstelle)

Garfield 22. Mär 2010 10:08

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Zitat:

Zitat von himitsu
... nja, dieses ist/war vorzugsweise auf die Komponenten (VCL) ausgelegt, da diese ja in Turbo Delphi nicht direkt eingebunden werden können, ...

Deshalb verwende ich die Hacks.

Zitat:

Zitat von himitsu
Vorallem die Umleitung von vielen Funktionen ist schon ein bissl aufwändig (also von der Erstellung und Auflistung der Funktionen her, aber mal sehn was sich machen läßt ... also wann und wie schnell ich dazu komm diesbezüglich ein paar zusätzliche Umleitungen einzurichten.

Ich habe gesehen, dass es sehr aufwändig ist. Vielleicht ist es sinnvoll, auf die Unit TntHackSysUtils und ähnliche zu verzichten und in einer Readme auf die direkte Verwendung hinzuweisen!?

Viel Spaß und Erfolg im neuen Job.

himitsu 22. Mär 2010 12:01

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Danke :)

Gut, bei der TntHackSysUtils ist es einfach, weil dort wirklich nichts gemacht wird, aber es gibt auch Units, wo "nur" ein Teil umgeleitet wurde (weiß grad nicht Welche), da müßte man dann beide Units (z.B. TntHackSysUtils und TntSysUtils) einbinden.
Aber es wird sich bestimmt eine möglichst einfache Lösung finden :)

Hatte den Code damals halt nur zur Ersetzung der Komponenten genutzt und da fällt dann ein derartiges Problem einfach nicht auf. :oops:

Garfield 23. Mär 2010 06:19

Re: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Das, worauf es ankommt, funktioniert. :thumb: Was erst später auffällt, sind dann die "Nebensächlichkeiten".

evilboy 14. Dez 2011 23:48

AW: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Vielen Dank für diese Tools, sie sind sehr nützlich und fühlen sich deutlich besser und nicht so wackelig an wie UTF8VCL. Letzteres läuft zwar auch noch auf Delphi 4, aber soweit zurück muss man auch wieder nicht gehen…

Nur eine kleine Bugmeldung: Bei mir (Delphi 7) beschwert es sich, wenn das PasswordChar eines Edits nicht #0 ist. Dann heißt es:
"Project Project1.exe raised exception class EReadError with message 'Property *Tab does not exist'. Process stopped. Use Step or Run to continue."

Wenn man also Password-Edits hat, sollte man das PasswordChar auf #0 setzen und stattdessen SendMessage(Edit1.Handle, EM_SETPASSWORDCHAR, Ord('*'), 0); in den Code einbinden.

himitsu 15. Dez 2011 01:12

AW: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
Ohh, das ist dann wohl ein "Bug", welcher sich nicht direkt beheben läßt. :cry:

Die DFM wird ja immernoch im ANSI-Format erstellt, da die Delphi-IDE hier noch die "alten" ANSI-Controls geladen hat und somit auch die DFMs als ANSI erstellt.
Die TNTControls werden ja erst zur Laufzeit des Programms "reingeschmugglt".

Bei den Strings ist es egal, da der StreamReader dieses automatisch ausgleicht, aber beim AnsiChar/WideChar macht er das nicht, also dürfte es überall zu Problemen kommen, wenn ein CHAR-Property in der DFM vorkommt.
Ich könnte höchtens mal schauen, ob ich den TNTs an diesen Stellen mit einem ANSI-Property verdecke und die Zugriffe weiterleite. :gruebel:

ivankr 17. Aug 2015 12:16

AW: TNT-Unicode-Controls-Hack for Turbo Delphi (and other)
 
The package is still available here: http://www.axolot.com/TNT/


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:17 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