Pytanie : Dlaczego re-write kod using sznurek Delphi 2010

Zadawalać, I mieć ten kod:

Var
 cDestino: PAnsiChar;
cOrigem: PAnsiChar;
iProgBar: Integer;
sFile: Ansistring;
sPath: Ansistring;
sDiaSemana: sznurek [20];
and;

  sFile := "PedItem.db";

  cOrigem:=strtopchar (sPath+'\ '+sFile) ;
 --> Błąd E2010 Niezgodny typ: "Przypalać" i "AnsiChar"

cDestino: = strtopchar ('C:\Back - up_AcxSir \ '+sDiaSemana+sFile);
--> Błąd: E2010 Niezgodny typ: "Przypalać" i "AnsiChar", I: W1057 Domniemany smyczkowy obsada od "AnsiString" "sznurek"

These dwa linia powodować te błąd i ostrzeżenie gdy kompilować z Delphi 2010.
What zmiana I musieć?
Thanks




Odpowiedź : Dlaczego re-write kod using sznurek Delphi 2010

I być odgadywanie ty dzwonić Windows API kartoteka lub jednakowy, więc ty potrzebować tylko PChar i smyczkowy typ, i Delphi kompilator decydować, według the wersja, the poprawny rodzaj i poprawny API wersja ono używać.

Z Delphi <2009 :="">Sznurek = AnsiString
(P) Przypalać = (P) AnsiChar
i wszystkie okno API dzwonić być the ANSI wersja, dzwonić:
CopyFile = CopyFileA

Z Delphi >=2009
Sznurek = WideString
Przypalać = WideChar
i wszystkie okno API dzwonić być the Szeroki wersja


w ten sposób, twój kod musieć robić z wszystkie wersja, bez zbyt dużo z inny typ oprócz gdy ty mieć wybór
(1):
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
Var
 cDestino, cOrigem: PChar;
 sFile, sPath, sDiaSemana: Sznurek;
 iProgBar: Integer;
i;

  sFile: = "PedItem.db";
  cOrigem: = strtopchar (sPath+'\ '+sFile);
  cDestino: = strtopchar ('C:\Back - up_AcxSir \ '+sDiaSemana+sFile); 
  CopyFile (cOrigem, cDestino, Fałszywy); 


Zauważać że ty móc Sznurek PChar z właśnie obsada w the sposób aflarin pokazywać dla AnsiString & PAnsiChar. 
W Ten Sposób ty móc nawet twój funkcja w jeden linia

  CopyFile (PChar (sPath+'\ '+sFile), PChar ('C:\Back - up_AcxSir \ '+sDiaSemana+sFile), Fałszywy); 
Inne rozwiązania  
 
programming4us programming4us