Frage : Wie man Code using Schnüre nach Delphi 2010 neu schreibt

Bitte habe ich diesen Code:

Var
 cDestino: PAnsiChar;
cOrigem: PAnsiChar;
iProgBar: Ganze Zahl;
sFile: Ansistring;
sPath: Ansistring;
sDiaSemana: Schnur [20];
and;

  sFile := „PedItem.db“;

  cOrigem:=strtopchar (sPath+'\ '+sFile) ;
 --> inkompatible Arten der Störung E2010: „Putzfrau“ und „AnsiChar“

cDestino: = strtopchar ('C:\Back - up_AcxSir \ '+sDiaSemana+sFile);
--> Störung: Inkompatible Arten E2010: „Putzfrau“ und „AnsiChar“ UND, warnend: W1057, das implizite Schnurform „AnsiString“ „Schnur“

These zwei zu von den Linien diese Störungen und Warnungen bei der Zusammenstellung mit Änderungen Delphi-2010.
What verursachen, muss ich tun?
Thanks




Antwort : Wie man Code using Schnüre nach Delphi 2010 neu schreibt

Ich schätze, dass Sie Windows API benennen, um Akten zu kopieren oder ähnlich, also Sie nur PChar benötigen und Arten aufreihen und Delphi-Compiler, entsprechend der Version, der korrekten freundlichen und korrekten API-Version entscheidet, die sie verwendet.

Mit Delphi <2009 :="">Schnur = AnsiString
(P) Putzfrau = (P) AnsiChar
und alle Fenster API, die benannt, sind die ANSI-Version, ex:
CopyFile = CopyFileA

Mit Delphi >=2009
Schnur = WideString
Putzfrau = WideChar
und alle benannten Fenster API sind die breite Version


so sollte Ihr Code gebildet werden, um mit allen Versionen zu kompilieren, ohne zu viel mit anderen Arten zu spielen ausgenommen, wenn Sie nicht Wahl haben
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
Var
 cDestino, cOrigem: PChar;
 sFile, sPath, sDiaSemana: Schnur;
 iProgBar: Ganze Zahl;
und;

  sFile: = „PedItem.db“;
  cOrigem: = strtopchar (sPath+'\ '+sFile);
  cDestino: = strtopchar ('C:\Back - up_AcxSir \ '+sDiaSemana+sFile); 
  CopyFile (cOrigem, cDestino, falsch); 


Merken, dass Sie Schnur in PChar mit gerade einer Form im Weise aflarin umwandeln können, das für AnsiString u. PAnsiChar gezeigt. 
So können Sie Ihre Funktion in einer Linie sogar benennen

  CopyFile (PChar (sPath+'\ '+sFile), PChar ('C:\Back - up_AcxSir \ '+sDiaSemana+sFile), falsch); 
Weitere Lösungen  
 
programming4us programming4us