Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi 7 nach Delphi 11 portieren (https://www.delphipraxis.net/210574-delphi-7-nach-delphi-11-portieren.html)

AnonyM.E 13. Mai 2022 09:44

Delphi 7 nach Delphi 11 portieren
 
Ich hoffe, dass ich hier die richtige Oberthema erwischt habe.

Fehlermeldung:
[dcc32 Fehler] Suchen.pas(233): E2010 Inkompatible Typen: 'System.TArray<System.Byte>' und 'Pointer'

Dieser betrifft diese Zeile:
frmDat.TblListe.GotoBookmark(Pointer(DBGridListe.S electedList.Items[i]));

TblListe ist eine TDBISAMTable bzw. ein normales Table-Objekt.
GotoBookmark hat als Eingangsparameter 'System.TArray<System.Byte>' und bekommt hier 'Pointer'

Meine Vermutung: Das hat mit der Umstellung auf UniCode zu tun.
Byte ist jetzt was anderes.

Wie löst man dieses Problem ?


M.E.

BerndS 13. Mai 2022 10:00

AW: Delphi 7 nach Delphi 11 portieren
 
Ohne die Quellen zu haben, kann ich nur vermuten, dass DBGridListe.SelectedList eine TBookmark Liste ist.
Dann könnte das funktionieren:
Delphi-Quellcode:
frmDat.TblListe.GotoBookmark(TBookmark(DBGridListe.S electedList.Items[i]));

Rolf Frei 13. Mai 2022 16:51

AW: Delphi 7 nach Delphi 11 portieren
 
Bookmarks laufen in neuen Unicode Delphis wesentlich anderst als noch bei D7. In D7 war TBookmark ein Pointer und TBookmarkStr ein String, in D11 ist es ein TArray<Byte> oder TBookmarkStr eine AnsiString, aber dieser sollte nicht mehr verwendet werden und Stellen an denen BookmarStr geutzt wird, sollte man nun auf TBookmark umstellen. Darf ich fragen welche Version von DBISAM du nutzt? Nehme mal an V4, weil V3 müsstes du massiv anpassen, weil es davon offiziell nie eine Unicodefahige Version gab. Ich hatte vor Jahren DBISAM 3 Unciode-tauglich gemacht, weil ich da unbedingt noch DBISAM 3 nutzen musste. War keine einfache Sache, aber hier läuft nun DBISAM 3 nun schon seit Jahren in Unicode Delphi's. Da musste ich auch so einiges umstellen, wegen den Bookmars und anderer Stellen des TDataset Interface, die von D7 deutlich verändert wurden (z.B. PChar -> TRecordBuffer). Ich denke aber das ist nicht dein Problem hier, sondern deine Komponenten die du da nutzt und die noch auf dem alten String Bookmark aufsetzen.

Was ist DBGridListe für eine Komponente und was für eine Typ ist das Items[x] da? Ein Cast auf TBookmark, wie BerndS es schreibt, könnte eventuell gehen, aber wenn die DBGridList Komponentne nicht auf die neuen TDataset Tpyen umgestellt ist, könntest du noch andere Probleme bekommen.


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