Parameter per Drag&Drop
-
<stdlib.h> gibt es nicht -> <cstdlib> einbinden.
using namespace std; gehört unter die Includes geschrieben sonst musst du zB vor cout immer std:: schreiben!
Parameter 0 ist immer das Programmpfad selbst. Paramter 1 ist der erste übergebene String (bei Drag&Drop der Programmname vom draufgezogenen Programm), etc.
system("PAUSE") ist wie system("CLS"):
- Niemals zu verwenden!
- Schlecht in der Performance
- KonsolenabhängigStatt system("PAUSE") nimm lieber das Codeschnipsel das du in der Konsolen-FAQ unter "Automatisches Schließen ..." findest!
MfG SideWinder
-
Was, stdlib.h gibt es nicht?!?
@Side
Wärs nicht eher angebracht zu schreiben:
"stdlib.h benutzt man im Normalfall unter C++ nicht mehr. Dafür schreibt man cstdlib."
??
-
Nein unter C++ benützt man sie nicht "im Normalfall nicht mehr" sondern gar nicht mehr. Laut Standard gibt es die Datei stdlib.h einfach nicht mehr
MfG SideWinder
-
Doch gibt es. Deprecated zwar, aber vorhanden.
-
ahso, ich dachete das währe komplizierter (imho hadde ich das getestet, im nachinein fällt mir aber ein, das ich eina abfrage bei nur einem Argument vergessen hadde ^^#)
Aber nochma danke für eure Hilfe __
Nachtrag:
Schade:mein Progg verabschiedet sich immer, weil es die Datei nichrt öffnen konnte!. Was genau wird denn bei Drag&Drop übergeben? Nur der Name oder der Komplette Pfad??[ Dieser Beitrag wurde am 10.07.2003 um 18:19 Uhr von THE_FreaK editiert. ]
-
system("pause"); und <stdlib.h> (wird scheinbar von system() bebraucht) hatte ich nur zum testen genommen.
an das code-schnipsel konnte ich mich noch nicht richtig gewöhnen (Anfänger)Ich hatte während dem Posting nicht viel Zeit, sonst hätte ich den namespace auch nicht vergessen
"Was genau wird denn bei Drag&Drop übergeben? Nur der Name oder der Komplette Pfad?"
Bei mir (win me) zeigt es den kompletten pfad mit datei an, also zB
"C:\ordner\ordner2\datei.dat"
-
genau das meinte ich
ich nehme dann argv[1] um eine Datei zu öffnen, allerdings kann die datei nicht geöfnet werden und ich hab ka warum
Geb ich den pfad manuell ein klappts.Hier der Code, villeicht findet ihr ja den Fehler
int main(int argc, char **argv) { FILE *FSource = NULL; FILE *FTarget = NULL; char PathIn[60]; char PathOut[60]; int c; bool* pBuffer; switch(argc) { case 1: { printf("Source> "); gets(PathIn); printf("Target> "); gets(PathOut); break; } case 2: { strcpy(PathIn, argv[1]); printf("Target> "); gets(PathOut); break; } case 3: { strcpy(PathIn, argv[1]); strcpy(PathOut, argv[2]); break; } default: { puts("ERROR: Unknown Error!"); return 1; } } if (FSource=fopen(PathIn,"r")) { if (FTarget=fopen(PathOut,"w")) { while ((c = (int) fgetc(FSource)) != EOF) { pBuffer = ItoB(c); for (int j=0; j<8; j++) { if (pBuffer[j]) fputs("1",FTarget); else fputs("0",FTarget); } fputs(" ",FTarget); } fclose(FSource); fclose(FTarget); } else { puts("ERROR: Could not create target!"); wait(); return 1; } } else { puts("ERROR: Could not open source!"); wait(); return 1; } delete[] pBuffer; wait(); return 0; }
-
Ich kenn zwar die Funktion ItoB nicht, aber gibt die wirklich einen Zeiger auf bool zurück???
-
Jap, tut sie
(s.u.)
Wenn ich das programm normal starte und dann alles per hand eingebe gehts auch mur halt nicht per Drag&Dropbool* ItoB (int Zeichen) { bool* pPuffer; int i=0; pPuffer = new bool[8]; for (i=7; i>=0; i--) { if ((Zeichen - (int)pow(2,i)) >= 0) { Zeichen -= (int)pow(2,i); pPuffer[i] = true; } else pPuffer[i] = false; } SwitchArray(&pPuffer); return pPuffer; }
-
Hast du schon mal probiert, dass du einfach alle Parameter ausgibst, die du in argv hast? Dazu könntest du den Quellcode von Münzbieger hernehmen. Vielleicht übergibt ja Drag&Drop nicht den korrekten Pfad.
Wo verwendest du eigentlich das Drag&Drop? Im Windows-Explorer oder in einem eigenen Programm?
-
im windowsexplorrer
jo, mnussich demnächst ma testen...