Unzulässige Zeigeradditon beim Zsammensetzen von Strings (war: Was ist hier falsch?)



  • Einfach alles zusammen vorher in einen (Ansi)String packen, wie du es brauchst, und dann im Download-Befehl c_str() nur noch auf diesen einen String anwenden.



  • BigNeal schrieb:

    String pfad;
    GetSystemDirectory(pfad.c_str(), 255);
    String bs1=pfad[1];
    String bs2=pfad[2];
    URLDownloadToFile(0, "http://www.website.de/eins/zwei/datei", bs1+bs2+"\\zwei\\datei", 0, 0);
    

    du solltest dich dringend mit AnsiString / String auseinander setzen.
    AnsiString::c_str() solltest du nur benutzen wenn explizit ein char* verlangt ist. Solange das nicht der fall ist, arbeite doch ruhig mit den viel bequemeren AnsiString Funktionen

    BigNeal

    Dann Fehlermeldung: Kovertierung von AnsiString nach char* nicht möglich

    Dasd schrieb:

    Einfach alles zusammen vorher in einen (Ansi)String packen, wie du es brauchst, und dann im Download-Befehl c_str() nur noch auf diesen einen String anwenden.

    gehts etwas genauer? (also einen code dazu?) weil ich keine ahnung davon habe



  • String eins="Hallo";
    String zwei=" Welt";
    String alles=eins+zwei;
    
    URLDownloadToFile(0, "http://www.website.de/eins/zwei/datei", alles.c_str(),...
    


  • Christian211 schrieb:

    String eins="Hallo";
    String zwei=" Welt";
    String alles=eins+zwei;
    
    URLDownloadToFile(0, "http://www.website.de/eins/zwei/datei", alles.c_str(),...
    
    String pfad;
    GetSystemDirectory(pfad.c_str(), 255);
    String bs1=pfad.c_str()[0];
    String bs2=pfad.c_str()[1];
    String bsall=bs1+bs2;
    URLDownloadToFile(0, "http://www.website.de/eins/zwei/datei", bsall.c_str()+"\\zwei\\datei", 0, 0);
    

    so meinstes oda? Jednefalls Fehler: Ungültige Zeigeraddition



  • in was für einen Variabeltyp wird

    "Hallo welt, ich bin ein von hand geschriebener String"
    

    umgewandelt?



  • öh...sorry? was? :p bin grad verwirrt
    was meinst du



  • String pfad;
    GetSystemDirectory(pfad.c_str(), 255);

    Läuft m.E. schon nicht mal gut: Der Windowsfunktion eine Zeiger auf einen Ansistring der nicht initialisiert ist übergeben kann gut gehen, muss aber nicht.

    besser

    char htext[256];
    memset(htext,0,256);
    GetSystemDirectory(htext,255);
    pfad=htext;

    weiter

    String bs1=pfad[0];
    String bs2=pfad[1];

    solle die ersten beiden Zeichen ergeben (nix mit c_str())oder

    bsall=pfad.SubString(1,2);



  • String pfad;
    char htext[256]; 
    memset(htext,0,256);
    GetSystemDirectory(htext,255); 
    pfad=htext;
    String bs1=pfad[0]; 
    String bs2=pfad[1];
    String bsall=pfad.SubString(1,2);
    URLDownloadToFile(0, "http://www.website.de/eins/zwei/datei", bsall.c_str()+"\\zwei\\datei", 0, 0);
    

    so also? Wenn ja: selber fehler



  • Christian211 schrieb:

    String bs1=pfad[0];
    String bs2=pfad[1];

    Da winkt schon eine Exception 😉
    AnsiString fängt bei 1 an



  • Warum liest du nicht einfach mal richtig?

    bsall.c_str()+"\\zwei\\datei
    

    Das geht sowieso nicht. Ich habe dir nicht die kompette Lösung gepostet, sondern Techniken aufgezeigt.

    und hier

    solle die ersten beiden Zeichen ergeben (nix mit c_str())oder
    

    stand ein ODER!!!

    *seufz*

    String pfad;
    char htext[256]; 
    memset(htext,0,256);
    GetSystemDirectory(htext,255); 
    pfad=htext;
    String bsall=pfad.SubString(1,2)+"\\zwei\\datei";
    URLDownloadToFile(0, "http://www.website.de/eins/zwei/datei", bsall.c_str(), 0, 0);
    

    Habe das jetzt nicht testen können -> warte auf Compiler

    Wenn es nicht geht nimm den Debugger und schau was wo drin steht



  • @BigNeal

    Asche auf mein Haupt

    @counter..

    Kennst du

    ExtractFileDir extrahiert die Laufwerks- und Verzeichnisinformationen aus dem angegebenen Dateinamen.

    Unit

    SysUtils

    Kategorie

    Dateizugriff

    extern PACKAGE AnsiString __fastcall ExtractFileDir(const AnsiString FileName);



  • Christian211 schrieb:

    Warum liest du nicht einfach mal richtig?

    bsall.c_str()+"\\zwei\\datei
    

    Das geht sowieso nicht. Ich habe dir nicht die kompette Lösung gepostet, sondern Techniken aufgezeigt.

    und hier

    solle die ersten beiden Zeichen ergeben (nix mit c_str())oder
    

    stand ein ODER!!!

    *seufz*

    String pfad;
    char htext[256]; 
    memset(htext,0,256);
    GetSystemDirectory(htext,255); 
    pfad=htext;
    String bsall=pfad.SubString(1,2)+"\\zwei\\datei";
    URLDownloadToFile(0, "http://www.website.de/eins/zwei/datei", bsall.c_str(), 0, 0);
    

    Habe das jetzt nicht testen können -> warte auf Compiler

    Wenn es nicht geht nimm den Debugger und schau was wo drin steht

    danke funzt


Anmelden zum Antworten