Problem mit Copyfile Befehl



  • Hallo!

    Ich wünsche allen erstmal frohe Ostern, und nun zu meinem Problem:

    Ich habe hier folgende Copyfile Routine, welche leider nicht funktioniert:

    AnsiString Drucker = "\\\\server\\drucker";
    
      // Befehl zum drucken
      CopyFile(String(Pfad + "\\schein.txt").c_str(), Drucker.c_str(), true);
      CopyFile(String(Pfad + "\\schein.prn").c_str(), Drucker.c_str(), true);
    

    Führe ich diesen Befehl aus, passiert nichts!

    Starte ich diese Routine,

    // Befehl zum drucken
      CopyFile(String(Pfad + "\\schein.txt").c_str(), "\\\\maik\\samsung", true);
      CopyFile(String(Pfad + "\\schein.prn").c_str(), "\\\\maik\\samsung", true);
    

    arbeitet der Drucker normal. Ich versteh das Problem nicht und wäre über Hilfe echt dankbar.

    Viele Grüße,

    Maik


  • Mod

    Hallo

    was sagt denn der Debugger, was in

    Drucker.c_str()
    

    steht

    Mfg
    Klaus



  • Wenn ich den String in einer MessageBox ausgeben lasse, steht "\\\maik\\samsung" drin, müsste also passen...

    Hat jemand noch eine Idee?

    Viele Grüße,

    Maik



  • Dann sind aber ein paar Backslashes zuviel im String, denn ausgeben müßte er
    "\\maik\samsung".



  • @~Escape:

    Das dachte ich auch, aber der Druckbefehl funktioniert nur mit "\\\maik\\samsung", will heißen, dass in dem String ja auch "\\\maik\\samsung" stehen muss, oder seh ich das falsch?

    Viele Grüße,

    Maik



  • Du mußt unterscheiden, ob du "\" im Source-Code schreibst und was wirklich im Speicher steht, nämlich nur "\". Du solltest dich mal mit Escape-Sequenzen in C-Strings auseinandersetzen. Du kennst doch bestimmt '\n' - dann erzeugt der Compiler daraus aber nur 1 ASCII-Zeichen: 0x0A (bzw. dezimal 10).
    Genauso ist das dann auch bei "\"...

    Wie füllst du denn die Variable Drucker (per Konsole, Textdatei, ...)?



  • Jetzt hat sogar dieses Forum die Backslashes entfernt...

    ich meinte, statt \\ steht dann nur \ im Speicher...



  • @~Escape:

    Ich fülle die Variable per Textdatei...

    Gruß

    Maik



  • Ja, dann darf auch nur

    \\maik\samsung
    

    in der Textdatei stehen.



  • @~Escape:

    Hallo Escape,

    bin ich zu doof um das zu verstehen?

    Ich habe mich schon etwas mit den Escape-Sequenzen auseinandergesetzt,

    allerdings funktioniert besagter Code ja nur so:

    // Befehl zum drucken 
    
      CopyFile(String(Pfad + "\\schein.txt").c_str(), "\\\\maik\\samsung", true); 
      CopyFile(String(Pfad + "\\schein.prn").c_str(), "\\\\maik\\samsung", true);
    

    Wieso darf er dann nicht so in der Textdatei stehen?

    Viele Grüße,

    Maik



  • weil jeder Backslash aus der Textdatei im Quellcode als 2 Backslashs dargestellt wird

    wenn du also in der TextDatei "\\maik\samsung" stehen hast macht der Compiler im fertigen Programm "\\\maik\\samsung" draus
    wenn in der Textdatei "\\\maik\\samsung" steht kommt im Programm ""\\\\\\maik\\\samsung"" raus und das kann nicht funktionieren



  • Danke Linnea,
    ich hoffe, jetzt versteht maikmueller es...

    Ich muß wohl noch ein wenig an meiner Beschreibung von Antworten basteln -)

    Ääääähhhhhhhh, niemand versteht mich 😃



  • @~Escape:

    Jetzt hat es funktioniert, ich hab mal wieder vor lauter Bäumen den Wald nicht gesehen.

    Danke nochmal an alle!

    Viele Grüße,

    Maik


Anmelden zum Antworten