Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
12.04.2004, 15:01
wurstiger willi



hallo,
ich bin neu hier und habe folgendes problem:

Quellcode:#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
    string pfad;
    printf("Bitte geben sie Pfad mit Dateinamen an! \n");
    cin >> pfad;
    
    
    GetFileAttributes(pfad);
    if(pfad=FILE_ATTRIBUTE_READONLY)
    {
        printf("Die Datei ist Schreibgeschützt! \n Ich werde sie normalisieren. \n)");
        setfileattributes(pfad, FILE_ATTRIBUTE_NORMAL);
        printf("Datei Schreibschutz wurde entfernt \n");
    }
    else
    {
        printf("Datei besitzt keinen Schreibschutz \n");
    }
        
    
  
  system("PAUSE");    
  return 0;
}
ich will also nachgucken, ob eine dazei schreibgeschützt ist oder nicht.
aber es funktioniert irgendwie nicht.
und ja, ich bin ein blutiger anfänger was c++ betrifft :D

ach ja, ich will das schon mit getfileattributes machen, da ich das programm noch erweitern will.

kann ich überhaut einem string eine pfadangabe zuweisen ?

--

zum Seitenanfang zum Seitenende Profil || Suche
001
12.04.2004, 15:04
KhanRKerensky



Zitat:
if(pfad=FILE_ATTRIBUTE_READONLY)
Denk da noch mal drüber nach...

--

"[...] you're going to burn in a very special level of Hell. A level they reserve for child molesters and people who talk at the theater." - Book

zum Seitenanfang zum Seitenende Profil || Suche
002
12.04.2004, 15:06
K-Putt



Quellcode:GetFileAttributes(pfad);
    if(pfad=FILE_ATTRIBUTE_READONLY)
Kann das überhaupt funktionieren?
a) Vergleiche werden mit '==' gemacht, was du im obigem Beispiel zu machen versuchst, ist eine Zuweisung.

b) Du wertest die rückgabe von GetFileAttributes() nicht aus, sondern vergleichst den Pfad den der Benutzer angegeben hat.

Empfehle dir folgende Lektüre + Beispiel.

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
003
12.04.2004, 15:07
wurstiger willi



wie gesagt, meine kenntnisse beschränken sich noch auf ein minimum :(

beim kompilieren meckert er aber schon bei getfileattributes.
was ist der fehler ?

---
ah, danke :D

--


Dieser Beitrag wurde am 12.04.2004 um 15:16 von wurstiger willi bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
004
12.04.2004, 15:15
K-Putt



Dann solltest du vielleicht nicht mit sowas "großartigem" anfangen.
Klingt jetzt vielleicht dumm, aber du musst erst mal grundlegende dinge wissen, z.b. oben genanntes, oder dass zwischen GROß / kleinschreibung unterschieden wird (darum funktioniert "setfileatrributes" in deinem Programm nicht).

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
005
12.04.2004, 15:22
wurstiger willi



es ist ja so, ich habe GetFileAttributes noch nie verwendet und weiss auch nicht wirklich wie.
und ich probiere mir vieles selbst beizubringen, was wohl nicht immer hinhaut.

--

zum Seitenanfang zum Seitenende Profil || Suche
006
12.04.2004, 15:43
K-Putt



Bleibt mir nur dich nochmals auf diesen Link hinzuweisen, da wird es ganz genau beschrieben, inklusive Beispiel:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/getfileattributes.asp

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
007
12.04.2004, 15:49
[RMen]OneStone



Muss nicht == sondern & im Vergleich sein!

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
008
12.04.2004, 17:36
wurstiger willi



so, ich habe es geschafft :D

Quellcode:#include <iostream>
using namespace std;

int main()
{
    
    bool endwert;
    DWORD truefalse;
    char pfad[256];
    t
    
    cout << "Bitte geben sie Pfad mit Dateinamen an! ";
    cin.getline (pfad, sizeof(pfad));
    
    ruefalse = GetFileAttributes(pfad);  
    
    
    //cout << truefalse;     ursprünglich zur hilfe gedacht
    
    
    if(truefalse==33)
    {
        cout << "Die Datei ist Schreibgeschützt!" << endl;
        cout << "Ich werde sie normalisieren." << endl;
        SetFileAttributes(pfad, FILE_ATTRIBUTE_NORMAL);
        cout << "Datei Schreibschutz wurde entfernt" << endl;
    }
        else
        {        
                    cout << "Datei besitzt keinen Schreibschutz"<< endl;
        }
                            
    
    if(truefalse==52)
        {
                cout << "keine Datei im Verzeichniss" << endl;
        }
                  
    
    if(truefalse<60)
        {
                cout << "Diese Datei ist nicht vorhanden ! " << endl;
        }
        
  
  system("PAUSE");    
  return 0;
}
danke an alle die sich die mühe gemacht haben mit zu helfen.

//so sollte es richtig sein, aber ich versteh die andere methode nicht ganz

--


Dieser Beitrag wurde am 12.04.2004 um 22:14 von wurstiger willi bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
009
12.04.2004, 18:50
[RMen]OneStone



Das ist grober Bockmist, setz mal beispielsweise das Archive Flag und du wirst sehen, dein Code funktioniert nicht mehr. Deine if-Abfrage muss so aussehen:
Quellcode:if(truefalse & FILE_READ_ONLY)
{
  // ...
Wenn du nicht nachvollziehen kannst warum, beschäftige dich mit der grundlegenden Materie Mathematik.

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
010
12.04.2004, 19:31
K-Putt



Du überprüfst ob die Datei in "pfad" ein bestimmtes Flag gesetzt hat, _bevor_ der Benutzer den pfad überhaupt angegeben hat?
%)

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
011
13.04.2004, 00:04
Leviathan



Es ist so, wie es jetzt (letzter Edit: 22:14) da steht falsch, und das wurde auch schon gesagt: Die Rückgabe von GetFileAttributes ist ein Bitfeld, und es kommt nur auf ein Bit an. So wie der Code jetzt da steht funktioniert er nur, wenn die Datei ganz bestimmte Eigenschaften außer dem Schreibschutz hat. Wenn z.B. Archiv, Komprimierung, Versteckt, System usw. gesetzt oder nicht gesetzt sind, gibt GetFileAttributes eine Zahl ungleich 33 zurück, obwohl die Datei schreibgeschutzt ist.
Probier' deine Methode mal mit versteckten Dateien / Systemdateien aus, da wirst du feststellen, dass dein Programm sie als nicht schreibgeschützt ansieht, egal ob sie es sind oder nicht.

Beschäftige dich mal mit Bitfeldern und den dafür wichtigen C-Operatoren & und | (und vielleicht noch ^).

Da stimmt außerdem noch etwas nicht: Du prüfst die Rückgabe auf kleiner als 60, das ist aber auch der Fall bei 33.

--

Entities: HL | HL²
Kompilierfehler
r_speeds | mehr über r_speeds

zum Seitenanfang zum Seitenende Profil || Suche
012
13.04.2004, 00:08
wurstiger willi



sollte auch ein > sein. hab das etwas verwurschtelt. hatte den falschen code reinkopiert nach hier. aber das stimmt schon. sofern die datei versteckt ist oder etc. gibt er etwas anderes aus. das stimmt schon. ich werde mich da nochmal dransetzen.

--

zum Seitenanfang zum Seitenende Profil || Suche
013
13.04.2004, 00:28
[RMen]OneStone



Danke für's Wiederholen, Leviathan.

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche