AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi 6 -> XE(4) wie mit char/pchar umgehen
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi 6 -> XE(4) wie mit char/pchar umgehen

Ein Thema von stalkingwolf · begonnen am 28. Jan 2016 · letzter Beitrag vom 29. Jan 2016
Antwort Antwort
stalkingwolf

Registriert seit: 6. Mai 2011
540 Beiträge
 
#1

Delphi 6 -> XE(4) wie mit char/pchar umgehen

  Alt 28. Jan 2016, 10:13
Morgen zusammen.

Wir portieren unsere Software ( + externe Komponenten usw ) von Delphi 6 nach XE4 und das Hauptproblem machen mir die alten char/pchar Variablen.
Nicht nur in unserer Software sondern auch in Komponenten/Units von Drittanbietern die teilweise nicht mehr weiterentwickelt werden.

Die Holzhammer Methode mit
Code:
type char = ansichar;
type pchar = pansichar;
ist zwar ganz nett, aber bringt auch wieder Probleme an anderen stellen.
Code:
var a :char;
begin
a := mystring[1]; // Fehler beim compilieren
oder Api Befehle die widechar haben möchten.

Wie löst man das ganze am besten oder muss man in den sauren Apfel beißen?
Unser Quellcode ist nicht gerade klein und würde das schon gerne effizient angehen.

LG
Sven
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Delphi 6 -> XE(4) wie mit char/pchar umgehen

  Alt 28. Jan 2016, 10:30
oder Api Befehle die widechar haben möchten.
Darauf bin ich auch mal reingefallen... Dadurch macht die Holzhammer-Methode leider keinen Sinn...

Ob die Strings jetzt 1 oder 2 Byte haben, ist eigentlich egal. Ein Converter muss nur an die Stellen, wo Strings direkt in einen Stream oder per Record auf die Platte geschrieben werden.

[Vereinfacht gesagt]

Mavarik
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
540 Beiträge
 
#3

AW: Delphi 6 -> XE(4) wie mit char/pchar umgehen

  Alt 28. Jan 2016, 11:56
Ich bin gerade dabei die XMLLib anzupassen ( die läuft ) und nun an Tcipher ( läuft noch nicht ).
Das ganze ist schon ziemlich aufwendig.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Delphi 6 -> XE(4) wie mit char/pchar umgehen

  Alt 28. Jan 2016, 13:29
Wie löst man das ganze am besten oder muss man in den sauren Apfel beißen?
Darum kommst du nicht herum.

Unser Quellcode ist nicht gerade klein und würde das schon gerne effizient angehen.
Also wir haben (vor bald 15 Jahren) angefangen indem wir einen neuen String-Typ definiert hatten und überall diesen statt String eingesetzt haben.
Bei jedem Einsetzen konnten wir davon ausgehen das es noch unter D6 ohne Probleme funktionierte und wir somit immer noch lieferfähig waren.
Beim ersetzen am besten gleich die Anwendung auf Code-Dupletten prüfen (sammelt sich so einiges mit der Zeit an) und zusammenfasse.
Strukturen die Ansi-Strings benötigen in Klassen verpacken und diese Abhängikeit mit Getter/Setter verstecken.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.443 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Delphi 6 -> XE(4) wie mit char/pchar umgehen

  Alt 28. Jan 2016, 13:39
Es muss ja nicht immer gleich ein Apple sein
Sauer ist er trotzdem und rum kommen tust du auch nicht.
Damals habe ich tatsächlich erst mal alles ansifiziert, dazu in alle units bei uses zuerst eine u_D2009 eingefügt, die die typdefinition enthielt.
Bei den Windows-Api Aufrufen habe ich erst mal alle zu der A Variante geändert.
Mir waren damals die Generics wichtig und Unicode erstmal egal.
Erst später habe ich die Strings dann zug um zug umgestellt.
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
540 Beiträge
 
#6

AW: Delphi 6 -> XE(4) wie mit char/pchar umgehen

  Alt 28. Jan 2016, 14:03
Der Code muss übrigens nicht mehr unter D6 laufen.
Wir stellen komplett um auf XE4.

Ich verzweifle gerade an DECCipher.
Einer unsere alten Kollegen hat die benutzt um unsere Lizenzdatei mit MIME64 zu codieren.

Aktuell arbeite ich mich durch ein kleines Programm durch und ändere unsere ganzen Units ab, so dass sie a) übersetzbar sind und dann b) lauffähig.
Hölzchen-Stöckchen Methode

Danke für die Antworten. Die types habe ich heute morgen schon entfernt und selber Hand angelegt.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Delphi 6 -> XE(4) wie mit char/pchar umgehen

  Alt 28. Jan 2016, 20:29
Hallo,

willkommen im Club ...

Ich verzweifle gerade an DECCipher.
Einer unsere alten Kollegen hat die benutzt um unsere Lizenzdatei mit MIME64 zu codieren

Das geht auch mit den Indy-Komponenten.


Heiko
Heiko
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
540 Beiträge
 
#8

AW: Delphi 6 -> XE(4) wie mit char/pchar umgehen

  Alt 29. Jan 2016, 10:00
Ich hab es hinbekommen gestern. Alles in DECCipher auf ansistring/ansichar geändert und auch die Übergabe auf Ansistring gecastet.
Kann es nun einwandfrei benutzen.
  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 12:32 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