AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi SerialNG - Komponente unter 2009 bringt Fehler
Thema durchsuchen
Ansicht
Themen-Optionen

SerialNG - Komponente unter 2009 bringt Fehler

Ein Thema von moelski · begonnen am 17. Dez 2008 · letzter Beitrag vom 17. Dez 2008
Antwort Antwort
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

SerialNG - Komponente unter 2009 bringt Fehler

  Alt 17. Dez 2008, 09:06
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:
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;
Und dann gibt es noch einige Fehler dieser Art:
[DCC Fehler] SerialNG.pas(1135): E2010 Inkompatible Typen: 'AnsiChar' und 'Char'

Kann jemand helfen ?
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: SerialNG - Komponente unter 2009 bringt Fehler

  Alt 17. Dez 2008, 09:13
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#3

Re: SerialNG - Komponente unter 2009 bringt Fehler

  Alt 17. Dez 2008, 09:49
Moin !

Ich denke auf UniCode können wir bei einer seriellen Schnittstelle verzichten ...

Habe nun mal alles umgeschrieben.

Delphi-Quellcode:
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);
Dies produziert nun folgenden Fehler:
[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'
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: SerialNG - Komponente unter 2009 bringt Fehler

  Alt 17. Dez 2008, 09:57
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#5

Re: SerialNG - Komponente unter 2009 bringt Fehler

  Alt 17. Dez 2008, 10:03
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
  Mit Zitat antworten Zitat
Antwort Antwort


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:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 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