AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi 2009/2010 Stringhandling

Ein Thema von Peter666 · begonnen am 6. Sep 2009 · letzter Beitrag vom 6. Sep 2009
Antwort Antwort
Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#1

Delphi 2009/2010 Stringhandling

  Alt 6. Sep 2009, 22:00
Hallo,

beim Portieren einige meiner alten Projekte nach Delphi 2010 ist mir eine Sache übel aufgestoßen. Früher funktionierte die Umwandlung eines Array of Char in einen String problemlos:

Delphi-Quellcode:
var
 Arr: Array[0..12] of char;
 str: string;

...
 Arr := str;
Das geht leider nicht mehr und ich musste auf folgendes Hilfskonstrukt umschwenken:


Delphi-Quellcode:
procedure StringToArray(const S: AnsiString; out Arr: Array of AnsiChar);overload;
begin
  fillchar(Arr, sizeof(Arr), 0);
  move(S[1], Arr, min(length(S),sizeof(arr)));
end;

procedure StringToArray(const S: String; out Arr: Array of Char);overload;
begin
  fillchar(Arr, sizeof(Arr), 0);
  move(S[1], Arr, min(length(S),sizeof(arr)));
end;
Kennt ihr eventuell eine elegantere Lösung zum Umfahren dieses Problems?

Peter
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Delphi 2009/2010 Stringhandling

  Alt 6. Sep 2009, 22:20
Muss das denn ein Array sein? Eigentlich kann man auf einen String doch ohnehin wie auf ein Array zugreifen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: Delphi 2009/2010 Stringhandling

  Alt 6. Sep 2009, 22:20
Zitat von Peter666:
Früher funktionierte die Umwandlung eines Array of Char in einen String problemlos:
Von wieviel früher redest du da? Also das kann nicht mal Delphi 7. Die andere Richtung kann Delphi, aber einen String in ein Array quetschen hat noch kein Delphi unterstützt.

Zitat:
und ich musste auf folgendes Hilfskonstrukt umschwenken:
StrLCopy/StrCopy ist dein Freund.
  Mit Zitat antworten Zitat
Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#4

Re: Delphi 2009/2010 Stringhandling

  Alt 6. Sep 2009, 22:49
Danke, stimmt das Problem war eigentlich ein anderes. Ich war zu faul die mehreren MB großen Projektdaten anzupassen und habe dann ein eigenes Skript zum Updaten geschrieben. Das hat aus
Datensatz: string[63] automatisch ein Datensatz: Array[0..62] of AnsiChar kreiiert, da AnsiString[63] nicht funktioniert.
Nun gibt es in etlichen Klassen Probleme, da just die festen Datensätze, die aus der verwendeten Pluginschnittstelle resultieren, nicht mehr passen. Ich kann da leider auch nicht Widestring verwenden, da ansonsten die Abwärtskompatibilität leidet.

Peter
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Delphi 2009/2010 Stringhandling

  Alt 6. Sep 2009, 23:05
Zitat von Peter666:
da AnsiString[63] nicht funktioniert.
String[63] ist nach wie vor ein ShortString, kein UnicodeString.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  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 08:50 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