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ängig

    Statt 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&Drop

    bool* 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; 
    }
    


  • @THE_FreaK

    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...


Anmelden zum Antworten