![]() |
SerialNG - Komponente unter 2009 bringt Fehler
Moin !
Eine unserer zentralen Komponenten ist SerialNG - eine Komponente für den seriellen Port. Leider gitb es nur Packages bis 2005. Unter 2007 lief das noch stressfrei, aber unter 2009 kommen nun (wie vermutet) Probleme. Hat zufällig jemand schon SerialNG auf 2009 umgeschrieben? Wenn nein ... könnte hier jemand ein paar Tips geben wie ich die Fehler weg bekomme? Es startet direkt hier:
Delphi-Quellcode:
Und dann gibt es noch einige Fehler dieser Art:
function TSerialCluster.GetDataAsPChar(Dest : PChar) : PChar;
type TMaxSize = array[0..MaxLongInt-1] of Char; // die vorherige Zeile bringt : [DCC Fehler] SerialNG.pas(589): E2100 Datentyp zu groß: 2 GB überschritten PMaxSize = ^TMaxSize; begin if Dest <> Nil then begin Move(ClusterData^, Dest^, ClusterSize); PMaxSize(Dest)^[ClusterSize] := #0; end; GetDataAsPChar := Dest; end; [DCC Fehler] SerialNG.pas(1135): E2010 Inkompatible Typen: 'AnsiChar' und 'Char' Kann jemand helfen ? |
Re: SerialNG - Komponente unter 2009 bringt Fehler
Unter Delphi bis 2007 war ein Char ein AnsiChar und ein PChar ein PAnsiChar. Nun sind das WideChar und PWideChar. Das heißt, evtl. genügt es, alle Chars durch AnsiChars, Strings durch AnsiStrings und PChars durch PAnsiChars zu ersetzen. Der Unicode-Support bleibt dabei natürlich auf der Strecke, aber zumindest kann die alte Funktionalität so vielleicht wieder hergestellt werden.
|
Re: SerialNG - Komponente unter 2009 bringt Fehler
Moin !
Ich denke auf UniCode können wir bei einer seriellen Schnittstelle verzichten ... Habe nun mal alles umgeschrieben.
Delphi-Quellcode:
Dies produziert nun folgenden Fehler:
var
CommPortName : array [0..127] of AnsiChar; ...... hCommPort := CreateFile(StrPCopy(CommPortName,'\\.\'+Copy(fCommPort,1,79)), GENERIC_READ OR GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_FLAG_OVERLAPPED,0); [DCC Fehler] SerialNG.pas(1003): E2010 Inkompatible Typen: 'AnsiChar' und 'Char' -> bezieht sich auf CommPortName Und ich habe eine Tonne voll mit: [DCC Warnung] SerialNG.pas(1374): W1057 Implizite String-Umwandlung von 'AnsiString' zu 'string' |
Re: SerialNG - Komponente unter 2009 bringt Fehler
Ich habe leider kein Delphi 2009 zur Verfügung, aber Du solltest Dir mal die Parameter von StrPCopy anschauen, die sind vermutlich auch auf Unicode geändert worden.
|
Re: SerialNG - Komponente unter 2009 bringt Fehler
Es gibt noch mehr Stellen, wo man Schwierigkeiten bekommt. z.B. die ganze Pointerrechnung.
Variants und TVARRecord sind weitere Kandidaten. Es gibt übrigens eine Unit Ansistrutils oder so ähnlich. Da sind die alten Funktionen als ANSI Funktionen drin. Aber Vorsicht diese sind gleichnamig. Das kann zu Seiteneffekten führen. Deshalb sollte man immer mit dem Namespace arbeiten. (AnsiStrUtils.TextReplace...) Ein großer Teil der frei verfügbaren Komponenten sollte mit D2009 nicht mehr (ohne Nacharbeit) funktionieren. Bei der Erprobung von D2009 hatten wir Probleme mit der Stabilität und die neuen Features wie Generics haben noch einige Bugs, die den Einsatz problematisch machen. Wir haben uns deshalb entschieden wieder zu D2007 zurückzukehren. Wenn wir nochmals Aufwand in den Quellcode stecken dann wohl eher in Richtung Delphi-Prism um hier einen gleitenden Übergang weg von Win32 zu schaffen. Gruß Peter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:55 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