<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Hilfe mit CopyFile]]></title><description><![CDATA[<p>Ich hab ein Problem mit der CopyFile Funktion. Selbst wenn ich versuche sie ganz simpel ohne Variablen einzusetzen wirft mein Compiler einen Fehler aus.</p>
<pre><code class="language-cpp">CopyFile (&quot;C:\\Ordner1\\datei.dat&quot;, &quot;C:\\Ordner2\\datei.dat&quot;, TRUE)
</code></pre>
<pre><code>error C2664: 'CopyFileW': Konvertierung des Parameters 1 von 'const char [21]' in 'LPCWSTR' nicht möglich
Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
</code></pre>
<p>Warum ist die Konvertierung nicht möglich? Habe ich da was falsch gemacht, oder muss ich vielleicht noch etwas im Compiler einstellen?</p>
<p>Wäre nett wenn ihr mir helfen könntet</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/178110/hilfe-mit-copyfile</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Jul 2026 10:03:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/178110.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 07 Apr 2007 14:55:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Hilfe mit CopyFile on Sat, 07 Apr 2007 14:55:17 GMT]]></title><description><![CDATA[<p>Ich hab ein Problem mit der CopyFile Funktion. Selbst wenn ich versuche sie ganz simpel ohne Variablen einzusetzen wirft mein Compiler einen Fehler aus.</p>
<pre><code class="language-cpp">CopyFile (&quot;C:\\Ordner1\\datei.dat&quot;, &quot;C:\\Ordner2\\datei.dat&quot;, TRUE)
</code></pre>
<pre><code>error C2664: 'CopyFileW': Konvertierung des Parameters 1 von 'const char [21]' in 'LPCWSTR' nicht möglich
Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.
</code></pre>
<p>Warum ist die Konvertierung nicht möglich? Habe ich da was falsch gemacht, oder muss ich vielleicht noch etwas im Compiler einstellen?</p>
<p>Wäre nett wenn ihr mir helfen könntet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1261217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1261217</guid><dc:creator><![CDATA[Eisbehr]]></dc:creator><pubDate>Sat, 07 Apr 2007 14:55:17 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe mit CopyFile on Sat, 07 Apr 2007 15:06:36 GMT]]></title><description><![CDATA[<p>Strings werden in der WinAPI nicht mehr als einfache einbytige C-Strings dargestellt. Im Sinne der Internationalisierung sind 255 verschiedene Zeichen einfach nicht genug und es wird der Unicode-Standard mit 2 Bytes pro Zeichen verwendet.</p>
<p>Der C++-Standard kennt zwar solche Zeichen inzwischen (wchar_t), verwendet sie aber nicht implizit. Du hast also drei Möglichkeiten:</p>
<p>a) Du schaltest im Compiler in den Projekteigenschaften auf &quot;ANSI-Zeichensatz verwenden&quot; um. Dann wird CopyFile nicht mehr zu CopyFileW sondern zu CopyFileA und dein Beispiel funktioniert - ist aber altmodisch und nicht für Internationalisierung geeignet.</p>
<p>b) Du wandelst deine Strings in Wide-Character-Strings um, bei statischen Strings ist das sogar sehr einfach:</p>
<pre><code class="language-cpp">#include &lt;tchar.h&gt;
#include &lt;windows.h&gt;
...

CopyFile( TEXT(&quot;...&quot;), TEXT(&quot;...&quot;), TRUE);
</code></pre>
<p>c) Du verwendest gefälligst auch Unicode in deinem Programm (beste Lösung). Je nach Compilerswitch wird aus TCHAR automatisch CHAR oder WCHAR. Das heißt für dich: Überall wo du bisher CHAR verwendest hast gehört ab jetzt TCHAR, überall wo statische Strings zu finden sind benötigst du das TEXT()-Makro, und Funktionen aus der Standardbibliothek heißen ab jetzt anders: Aus strcpy() wird tcscpy(), etc.</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1261222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1261222</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Sat, 07 Apr 2007 15:06:36 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe mit CopyFile on Sat, 07 Apr 2007 16:50:44 GMT]]></title><description><![CDATA[<blockquote>
<p>c) Du verwendest gefälligst auch Unicode in deinem Programm (beste Lösung). Je nach Compilerswitch wird aus TCHAR automatisch CHAR oder WCHAR. Das heißt für dich: Überall wo du bisher CHAR verwendest hast gehört ab jetzt TCHAR, überall wo statische Strings zu finden sind benötigst du das TEXT()-Makro, und Funktionen aus der Standardbibliothek heißen ab jetzt anders: Aus strcpy() wird tcscpy(), etc.</p>
</blockquote>
<p>Also ich bin absoluter programmier Neuling(Vorkenntnisse beziehen sich auf den normalen Anfänger Buch Stoff) und verstehe nicht so wirklich was das bedeuten soll.<br />
Ich habe bisher nie CHAR verwendet, nur eben den kleingeschriebenen char Datentyp.<br />
Was ist dieses CHAR, wie verwendet man das? Und was hat es mit TCHAR und WCHAR auf sich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1261261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1261261</guid><dc:creator><![CDATA[Eisbehr]]></dc:creator><pubDate>Sat, 07 Apr 2007 16:50:44 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe mit CopyFile on Sat, 07 Apr 2007 19:24:44 GMT]]></title><description><![CDATA[<p>Hat dir SideWinder alles schon erklärt. Lies nochmal genauer.</p>
<p>sizeof(CHAR) = sizeof(char) = 1<br />
sizeof(WCHAR) = 2<br />
sizeof(TCHAR) = [kommt drauf an, ob UNICODE definiert ist, d.h. ob irgendwo &quot;#define UNICODE&quot; steht]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1261338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1261338</guid><dc:creator><![CDATA[WebFritzi]]></dc:creator><pubDate>Sat, 07 Apr 2007 19:24:44 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe mit CopyFile on Sun, 08 Apr 2007 11:13:20 GMT]]></title><description><![CDATA[<blockquote>
<p>Hat dir SideWinder alles schon erklärt. Lies nochmal genauer.</p>
</blockquote>
<p>Ich habe das so verstanden das ich anstatt char als Datentyp TCHAR benutzen soll, um dem Unicode Standard gerecht zu werden. Aber wenn ich als Datentyp TCHAR verwende gibt der Compiler einen Fehler aus. Daher dachte ich mir das ich es wohl nicht richtig verstehe. Da kann ich so oft lesen wie ich will, für mich will sich aus diesem Text kein anderer Sinn erschließen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1261576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1261576</guid><dc:creator><![CDATA[Eisbehr]]></dc:creator><pubDate>Sun, 08 Apr 2007 11:13:20 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe mit CopyFile on Thu, 12 Apr 2007 11:53:20 GMT]]></title><description><![CDATA[<p>Auch wenn mir auf den oberen Beitrag niemand geantwortet hat wäre es nett wenn mir bei meinem nächsten Problem geholfen wird.<br />
Ich habe ein Problem damit meine Strings in LPCWSTR zu ändern wie es von der CopyFile() verlangt wird. Hab schon bei Google gesucht und in der MSDN, aber die meisten Texte verstehe ich nicht. Also falls möglich wäre eine verständliche und simpel erklärte Antwort nett.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264569</guid><dc:creator><![CDATA[Eisbehr]]></dc:creator><pubDate>Thu, 12 Apr 2007 11:53:20 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe mit CopyFile on Thu, 12 Apr 2007 12:07:29 GMT]]></title><description><![CDATA[<p>Hat SideWinder doch schon geschrieben:</p>
<p>CopyFile (TEXT(&quot;C:\\Ordner1\\datei.dat&quot;), TEXT(&quot;C:\\Ordner2\\datei.dat&quot;), TRUE);</p>
<p>TEXT ist ein Makro und weist den Compiler an, je nach Einstellung (Ansi oder Unicode) entweder 1-Byte- oder 2-Byte-Unicode-Strings zu erzeugen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264589</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264589</guid><dc:creator><![CDATA[mmm]]></dc:creator><pubDate>Thu, 12 Apr 2007 12:07:29 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe mit CopyFile on Thu, 12 Apr 2007 12:16:21 GMT]]></title><description><![CDATA[<p>Ich hab mich undeutlich ausgedrückt. Ich meinte wenn ich eine Variable mit dem Datentyp string hab. Da kann ich dieses TEXT() nicht benutzen sondern muss auf LPCWSTR casten oder sonstwas. Nur wie ich des hin bekomme ist mir ein Rätsel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264599</guid><dc:creator><![CDATA[Eisbehr]]></dc:creator><pubDate>Thu, 12 Apr 2007 12:16:21 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe mit CopyFile on Thu, 12 Apr 2007 13:45:07 GMT]]></title><description><![CDATA[<p>Wenn Du einen Ansi-String nach Unicode konvertieren möchtest:<br />
WinApi-Funktion &quot;MultiByteToWideChar&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264687</guid><dc:creator><![CDATA[mmm]]></dc:creator><pubDate>Thu, 12 Apr 2007 13:45:07 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe mit CopyFile on Thu, 12 Apr 2007 14:25:51 GMT]]></title><description><![CDATA[<p>Und wie benutz ich des jetzt? Was da in der MSDN steht bringt mich kein stück weiter. Woher soll ich wissen welche flags ich zu benutzen hab?<br />
Ich bekomme vom Compiler nur diese Meldung wenn ich versuche die Funktion zu benutzen.</p>
<pre><code>error C2664: 'MultiByteToWideChar': Konvertierung des Parameters 3 von 'std::string' in 'LPCSTR' nicht möglich
Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1264728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264728</guid><dc:creator><![CDATA[Eisbehr]]></dc:creator><pubDate>Thu, 12 Apr 2007 14:25:51 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe mit CopyFile on Thu, 12 Apr 2007 14:57:50 GMT]]></title><description><![CDATA[<p>das mit dem TCAHR sollte in etwa so aussehen:</p>
<pre><code class="language-cpp">const TCHAR* path=&quot;C:\\abc.txt&quot;;
const TCHAR* newpath=&quot;C:\\Programme\\abc.txt&quot;;
CopyFile(path, newpath, TRUE);
</code></pre>
<p>allerdings solltest du dann noch &lt;tchar.h&gt; includieren und anstatt main() _tmain() verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264752</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264752</guid><dc:creator><![CDATA[$noopy]]></dc:creator><pubDate>Thu, 12 Apr 2007 14:57:50 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe mit CopyFile on Thu, 12 Apr 2007 18:33:29 GMT]]></title><description><![CDATA[<p>Kann ich dann einfach eine string variable in ein TCHAR casten und in der AutoCopy Funktion benutzen? Ich frage weils bei mir nicht geklappt hat, aber aus Erfahrung weis ich das das nichts zu sagen hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264809</guid><dc:creator><![CDATA[Eisbehr]]></dc:creator><pubDate>Thu, 12 Apr 2007 18:33:29 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe mit CopyFile on Thu, 12 Apr 2007 16:40:40 GMT]]></title><description><![CDATA[<p>Eisbehr schrieb:</p>
<blockquote>
<p>Und wie benutz ich des jetzt? Was da in der MSDN steht bringt mich kein stück weiter. Woher soll ich wissen welche flags ich zu benutzen hab?<br />
Ich bekomme vom Compiler nur diese Meldung wenn ich versuche die Funktion zu benutzen.</p>
<pre><code>error C2664: 'MultiByteToWideChar': Konvertierung des Parameters 3 von 'std::string' in 'LPCSTR' nicht möglich
Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden
</code></pre>
</blockquote>
<p>Verwende die Methode <em>c_str()</em>, um aus einem <em>std::string/std::wstring</em>-Objekt einen C-String zu machen. Da brauchste nix konvertieren.</p>
<p>$noopy schrieb:</p>
<blockquote>
<p>das mit dem TCAHR sollte in etwa so aussehen:</p>
<pre><code class="language-cpp">const TCHAR* path=&quot;C:\\abc.txt&quot;;
const TCHAR* newpath=&quot;C:\\Programme\\abc.txt&quot;;
CopyFile(path, newpath, TRUE);
</code></pre>
</blockquote>
<p>Pappalapapp, so sieht das aus:</p>
<pre><code class="language-cpp">const TCHAR szPath[] = TEXT(&quot;C:\\abc.txt&quot;);
const TCHAR szNewPath[] = TEXT(&quot;C:\\Programme\\abc.txt&quot;);
CopyFile(szPath, szNewPath, TRUE);
</code></pre>
<p>Oder, hier sinnvoller: Du gibst die Pfade direkt mit dem TEXT-Makro in der Funktion an...so wie es hier auch schon vorher x-Mal geschrieben wurde <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264826</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Thu, 12 Apr 2007 16:40:40 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe mit CopyFile on Thu, 12 Apr 2007 18:33:04 GMT]]></title><description><![CDATA[<p>CodeFinder schrieb:</p>
<blockquote>
<p>Verwende die Methode c_str(), um aus einem std::string/std::wstring-Objekt einen C-String zu machen. Da brauchste nix konvertieren.</p>
</blockquote>
<p>Nix konvertieren heißt ich brauche kein &quot;MultiByteToWideChar&quot; oder das verwenden von blub.c_str() schmeisst keine Fehlermeldug mehr aus?</p>
<p>Mein Problem ist ja das ich eine string variable habe (aus Datei ausgelesen) und damit die CopyFile füttern will. Vielleicht hilfts mir wenn ihr da mal ein Konkretes Beispiel dazu bringt.<br />
Bei blanken Erklärungen versteh ich irgendwie immer nur Bahnhof.</p>
<p>MfG<br />
Eisbehr</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264895</guid><dc:creator><![CDATA[Eisbehr]]></dc:creator><pubDate>Thu, 12 Apr 2007 18:33:04 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe mit CopyFile on Thu, 12 Apr 2007 19:44:12 GMT]]></title><description><![CDATA[<p>Eisbehr schrieb:</p>
<blockquote>
<p>oder das verwenden von blub.c_str() schmeisst keine Fehlermeldug mehr aus?</p>
</blockquote>
<p>So ist es.</p>
<p>Eisbehr schrieb:</p>
<blockquote>
<p>Mein Problem ist ja [...]</p>
</blockquote>
<p>Ähm, das ist doch kein Problem ?! ... Also wenn Dein Programm mit UNICODE arbeitet, dann verwende auch entsprechend überall UNICODE-Anweisungen (Beispiel std::<strong>w</strong>string statt std::string) und Du hast keine Probleme. Vllt ist es auch anfangs einfacher UNICODE erstmal zu deaktivieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264931</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Thu, 12 Apr 2007 19:44:12 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe mit CopyFile on Thu, 12 Apr 2007 20:12:04 GMT]]></title><description><![CDATA[<p>Wenn der Fragesteller einen ANSI-String aus einer Datei liest und als UNICODE weiter verarbeiten möchte, wird er den String schon irgendwo konvertieren müssen - eben mit &quot;MultiByteToWideChar&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1264945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1264945</guid><dc:creator><![CDATA[mmm]]></dc:creator><pubDate>Thu, 12 Apr 2007 20:12:04 GMT</pubDate></item><item><title><![CDATA[Reply to Hilfe mit CopyFile on Fri, 13 Apr 2007 11:01:19 GMT]]></title><description><![CDATA[<p>mmm schrieb:</p>
<blockquote>
<p>Wenn der Fragesteller einen ANSI-String aus einer Datei liest und als UNICODE weiter verarbeiten möchte, wird er den String schon irgendwo konvertieren müssen - eben mit &quot;MultiByteToWideChar&quot;.</p>
</blockquote>
<p>Siehe meinen letzten Satz im voherigen Post, hängt halt davon ab, welchen Zeichensatz er letztendlich verwendet. In Deinem Fall muss er konvertieren, klar <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1265220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1265220</guid><dc:creator><![CDATA[CodeFinder]]></dc:creator><pubDate>Fri, 13 Apr 2007 11:01:19 GMT</pubDate></item></channel></rss>