AGB  ·  Datenschutz  ·  Impressum  







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

Records mit string[] in Delphi2009

Ein Thema von kaju74 · begonnen am 11. Mär 2009 · letzter Beitrag vom 11. Mär 2009
Antwort Antwort
kaju74

Registriert seit: 22. Okt 2003
185 Beiträge
 
#1

Records mit string[] in Delphi2009

  Alt 11. Mär 2009, 11:02
Hallo!

Ich bin gerade dabei, alle unsere Projekte auf Delphi2009 umzustellen. Dabei stoße ich derzeit sehr oft auf Compiler-Warnings die besagen, dass mit evtl. Datenverlust aufgrund einer String-Umwandlung zu rechnen ist. Das ist auch logisch, da viel mit Records nach folgendem Stil gearbeitet wird:

Delphi-Quellcode:
  TMyRecord = record
    LastName: string[32];
    FirstName: string[32];
  end;
Die expliziten Längenangaben in Klammern werden benötigt, da die Daten teilweise auch weggeschrieben werden. Wird der Record nun nach folgendem Schema gefüllt, ...

Delphi-Quellcode:
  MyRecord: TMyRecord;
  LastName, FirstName: string;
begin
  LastName := 'Hoffmann';
  FirstName := 'Marc';

  MyRecord.LastName := LastName;
  MyRecord.FirstName := FirstName;
end;
...kommen die Warnings, da ja versucht wird, ein UNICODE-String einem ShortString (= 32 Länge) zuzuweisen. Gibt es in Delphi2009 nun eine Möglichkeit AUßER einem Typcase alá "MyRecord.LastName := AnsiString(LastName)" dieses Problem eleganter zu lösen oder generell einen anderen Ansatz...??

Vielen Dank & Gruß,
kaju
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Records mit string[] in Delphi2009

  Alt 11. Mär 2009, 11:07
Sollte
LastName, FirstName: string[32]; oder
LastName, FirstName: AnsiString; heissen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Records mit string[] in Delphi2009

  Alt 11. Mär 2009, 11:15
Wie wäre es keine Typisierten Dateien mehr zu nehmen sondern z.B. XML oder eine DB?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
kaju74

Registriert seit: 22. Okt 2003
185 Beiträge
 
#4

Re: Records mit string[] in Delphi2009

  Alt 11. Mär 2009, 11:24
Hi...und danke für die schnellen Antworten.

@mkinzler:

Okay...dann spare ich mir den Typecast, muss aber dennoch manuell alles ändern...Aber das habe ich mir schon gedacht. Ich hatte gehofft, es gäbe eine neue Möglichkeit bereits im Record den UNICODE-Typ durch Ansi zu ersetzen, das geht aber so nicht.

@Bernhard Geyer:

Da hast Du für neue Projekt durchaus recht und wird dann auch so gemacht, die vorhandenen kommunizieren aber mittels dieser Strukturen über eine PlugIn-Architektur, die nicht mal so eben ersetzt werden kann...leider. Außerdem reden wir hier von sehr, sehr großen Delphi-Projekten, die dann mühsam angepasst werden müssen (ich habe auch so schon genug Ärger wegen der UNICODE-Umstellung).

Naja...bleibt mir wohl nichts anderen übrig, alle die Warnings durch expliziete Typecats zu verscheuchen....

Danke & Gruß,
kaju
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Records mit string[] in Delphi2009

  Alt 11. Mär 2009, 11:27
Wie gut ist die Plugin-Schnittstelle gekapselt?

Evtl. im Programm mit Strings ohne längenangabe arbeiten und dann in der Plugin-Unit diese auf die längen"-verseuchte" Struktur umsetzen. Parallel noch eine Unicodefähige Version der Schnittstelle hochziehen und dann erst mal beide Versionen im Hauptprogramm unterstützen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
kaju74

Registriert seit: 22. Okt 2003
185 Beiträge
 
#6

Re: Records mit string[] in Delphi2009

  Alt 11. Mär 2009, 11:43
Hallo!

Prinzipiell möglich aber: Wir können unseren Kunden nicht mal eben ALLE Module austauschen lassen, nur damit diese wieder genauso funktionieren wie vorher (~800MB gepackte Programmdateien in 35 Einzelmodulen). Wir setzen die Projekte Schritt-für-Schritt auf Delphi 2009 um und liefern dann die Updates "Häppchenweise". Daher müssen wir die derzeitigen Schnittstellen auch so weiternutzen, soweit es geht. Tja, ist echt schwieriger und aufwendiger die Umstellung als gedacht Wie gesagt, für neue (Einzel-)Projekte machen wir das dann anders...Naja, ich wollte halt zunächst die Record-Warnings wegbekommen...Okay, aber danke.

Gruß,
kaju
  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 17:18 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