Unzulässige Zeigeradditon beim Zsammensetzen von Strings (war: Was ist hier falsch?)
-
Wieder geöffnet ^^
String pfad; GetSystemDirectory(pfad.c_str(), 255); String bs1=pfad.c_str()[0]; String bs2=pfad.c_str()[1]; URLDownloadToFile(0, "http://www.website.de/eins/zwei/datei", bs1.c_str()+bs2.c_str()+"\\zwei\\datei", 0, 0);Ich dachte ich hätte eine Antwort...naja ging doch nicht...
wie muss es denn richtig sein?
-
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 FunktionenBigNeal
-
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 FunktionenBigNeal
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\\dateiDas 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())oderstand 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
-
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\\dateiDas 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())oderstand 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