Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Kontrolle einer Datei

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
General



Anmeldungsdatum: 26.11.2006
Beiträge: 149

BeitragVerfasst am: 01.03.2007, 18:36    Titel: Kontrolle einer Datei Antworten mit Zitat

Also ich will folgendes machen, wenn mein programm aufgerufen wird, soll es gucken ob eine DAtei schon existiert und wenn diese DAtei schon existiert soll es da was rauslesen.Wenn die DAtei nicht existiert dann soll es was reinschreiben.
Code:

sub admin
    if dir("wort.bin")="" then
        print "Geben sie das Passwort ein";
        do
            y=inkey$
            if y=chr$(13) then
                exit do
            open"wort.bin" for binary as #1
            get #1,, b
            close #1
                if instr(b,y) then
                    ?"Ihr Passwort war richtig sie werden zum Admintool weitergeleitet."
                end if
            end if
            if y<>"" then
                a=a+y
                print"*";
            end if
        loop
    elseif dir("wort.bin")="wort.bin" then
        ?"Bitte geben sie ihr Passwort ein und merken sie es sich gut";
        do
            y=inkey$
            if y<>"" then
                a=a+y
                print "*";
            end if
            if y=chr$(13) then
                exit do
                open"wort.bin" for binary as #1
                put #1,,y
                close #1
            end if
        loop
    end if
end sub

ich habe shcon ma probiert, aber irgendwie geht es nicht, also das hier sit nur ein auszug aus meinem programm, aber der is halt der schwerpunkt.Sehen wir mal drüber hinweg das die Passwort eingabe usw. sehr primitiv ist, aber das stehe ja auch nicht zur debatte.Wisst ihr vielei warum immer nur der erste teil von meinem Programm ausgeführt wird und nicht der zweite denn die Datei "wort" existiert ja noch nicht ma.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 01.03.2007, 18:40    Titel: Antworten mit Zitat

das war glaub 'ne ganz einfache geschichte ?!

Code:


open "file.ext" for binary access write as #1
FL=lof(1)
if FL=0 then
(datei existiert nicht oder ist leer)
else
(datei existiert bereits)
end if
close #1



_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 01.03.2007, 18:41    Titel: Antworten mit Zitat

versuch mal
elseif dir("wort.bin")<>"" then
stat
elseif dir("wort.bin")="wort.bin" then"


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4699
Wohnort: ~/

BeitragVerfasst am: 01.03.2007, 18:44    Titel: Antworten mit Zitat

Es kann sein (oder sollte wohl auch so sein), dass sich im ersten Teil der Wert von dir("wort.bin") ändert. Ich fände es geschickter, den aktuellen Wert erst einmal zu fixieren:
Code:
test$ = dir("wort.bin")

und dann in der Abfrage
Code:
if test$=""
  [...]
elseif test$="wort.bin"
  [...]
end if
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
General



Anmeldungsdatum: 26.11.2006
Beiträge: 149

BeitragVerfasst am: 01.03.2007, 19:25    Titel: Antworten mit Zitat

ah ok das sind plausible antworten und auch möglichkeiten werde es umsetzen, danke
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 01.03.2007, 22:45    Titel: Antworten mit Zitat

aber keiner hat mal geprüft ob das Prog dann läuft ...
Code:
Function admin () As Integer
  Dim As String y, a, b
  If Dir("wort.bin")="wort.bin" Then    'Datei existiert
    Print "Geben sie Ihr Passwort ein : ";
    a=""
    Do
      y=Inkey
      If y=Chr(13) Then
        Print                           'nächste Zeile
        Open"wort.bin" For Input As #1
        Line Input #1, b                'PW lesen
        Close #1
        If a=b Then
          Print "Ihr Passwort war richtig. ";
          Return 0                       'Ok
        Else
          Print "Ihr Passwort war falsch!"
          Return -1                      'nicht OK
        End If
      End If
      If y>=" " Then a=a+y : Print"*";   'nur Zeichen ab 'SPACE'
    Loop
  Elseif Dir ("wort.bin")<>"wort.bin" Then 'Datei existiert nicht
    Print "Bitte geben sie ein Passwort ein und merken sie es sich gut! ";
    a=""
    Do
      y=Inkey
      If y=Chr(13) Then
        Print                           'nächste Zeile
        Open"wort.bin" For Output As #1 'Datei erstellen
        Put #1,1,a                      'PW schreiben
        Close #1
        Print "Zur Bestaetigung bitte ..."
        If admin = 0 Then 'Aufruf zur ersten PW-wiederholung
          Return 0        'Ok
        Else
          Kill "wort.bin" 'falsche PW-Datei löschen
          Return -1       'nicht OK
        End If
      End If
      If y>=" " Then a=a+y : Print "*"; 'nur Zeichen ab 'SPACE'
    Loop
  End If
End Function

Screen 18,32
If admin = -1 Then Sleep : End
Print "Sie werden weitergeleitet."
Sleep

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
General



Anmeldungsdatum: 26.11.2006
Beiträge: 149

BeitragVerfasst am: 02.03.2007, 15:43    Titel: Antworten mit Zitat

ah alles klar danke, volta, hatte mich nämlich gewundert warum das programm so wie ich es nach anweisung gemacht habe net, ging, aber nur gehts ja, aber kannst du mir ma die sache mit return -1 und so erklären
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4699
Wohnort: ~/

BeitragVerfasst am: 02.03.2007, 15:50    Titel: Antworten mit Zitat

Das ist ein Rückgabewert, den du später auswerten kannst. Wenn alles geklappt hat, bekommst du beim Funktionsaufruf den Wert 0 zurück, sonst -1 (auch wenn ich das persönlich anders herum machen würde, aber das ist Geschmackssache).

Wenn dann irgend etwas nicht geklappt hat (also in der drittletzten Zeile: admin (der Rückgabewert der Funktion) = -1), dann bricht das Programm vorzeitig ab.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
General



Anmeldungsdatum: 26.11.2006
Beiträge: 149

BeitragVerfasst am: 02.03.2007, 16:04    Titel: Antworten mit Zitat

jetzt hab ich ma noch ne frage, kann ich das so hier machen oder warum meckert da FB
Code:

sub admin
Function adminlogin () As Integer

  If Dir("wort.bin")="wort.bin" Then    'Datei existiert
    Print "Geben sie Ihr Passwort ein : ";
    a=""
    Do
      y=Inkey
      If y=Chr(13) Then
        Print                           'nächste Zeile
        Open"wort.bin" For Input As #1
        Line Input #1, b                'PW lesen
        Close #1
        If a=b Then
          Print "Ihr Passwort war richtig. ";
          Return 0                       'Ok
        Else
          Print "Ihr Passwort war falsch!"
          Return -1                      'nicht OK
        End If
      End If
      If y>=" " Then a=a+y : Print"*";   'nur Zeichen ab 'SPACE'
    Loop
  Elseif Dir ("wort.bin")<>"wort.bin" Then 'Datei existiert nicht
    Print "Bitte geben sie ein Passwort ein und merken sie es sich gut! ";
    a=""
    Do
      y=Inkey
      If y=Chr(13) Then
        Print                           'nächste Zeile
        Open"wort.bin" For Output As #1 'Datei erstellen
        Put #1,1,a                      'PW schreiben
        Close #1
        Print "Zur Bestaetigung bitte ..."
        If adminlogin = 0 Then 'Aufruf zur ersten PW-wiederholung
          Return 0        'Ok
        Else
          Kill "wort.bin" 'falsche PW-Datei löschen
          Return -1       'nicht OK
        End If
      End If
      If y>=" " Then a=a+y : Print "*"; 'nur Zeichen ab 'SPACE'
    Loop
  End If
End Function
end sub

ich hoffe es ist ok das ich dein code verwende volta
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 02.03.2007, 16:06    Titel: Antworten mit Zitat

Das ist ganz klar, etweder schreibst Du eine Sub Routine oder eine Function..
die Function ist im prinzip das gleiche wie eine Sub nur mit dem unterschied das sie einen Wert zurück liefert...
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
General



Anmeldungsdatum: 26.11.2006
Beiträge: 149

BeitragVerfasst am: 02.03.2007, 16:09    Titel: Antworten mit Zitat

achso alles klar also was wäre icn meinem fall besser ne funbction oder nen sub
?? hmm ma gucken
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 02.03.2007, 16:12    Titel: Antworten mit Zitat

Soweit ich das Programm überflogen habe ist es mit der Funktion schon besser, da es Dir wie in dem Beispiel da oben entweder 0 für ok oder -1 für einen auftretenden fehler zurück liefert und Du dementsprechend reagieren kannst, zum beispiel mit Programmabbruch ect...
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
General



Anmeldungsdatum: 26.11.2006
Beiträge: 149

BeitragVerfasst am: 02.03.2007, 16:13    Titel: Antworten mit Zitat

alles klar hab es jetzt ma nur als function gemacht, jetzt kommt aber der fehler
Code:

C:\Dokumente und Einstellungen\christopher\Desktop\Programme\FreeBasci\Freebasic.o:fake:(.text+0xe7): undefined reference to `ADMIN@0

so habs ma in ne code box geacht zum bessernsehen, was meint der mit dem fehler??


EDIT:HAB DEN FEHLER GEFUNDEN danke nochma
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 02.03.2007, 16:18    Titel: Antworten mit Zitat

mit der fehlermeldung kann ich ansich leider nichts anfangen ?! Ist die Function richtig geschrieben ?
also
Code:
Function Name as Wert

und hast Du sie Declariert ? vor der Function und den Aufruf

Code:
Declare Function Name as Wert

_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 02.03.2007, 17:28    Titel: Antworten mit Zitat

Zitat:
ich hoffe es ist ok das ich dein code verwende volta
aber nur wenn du die Dim's (Dim As String y, a, b) wieder einfügst! grinsen
Wenn du die nicht angibst kann es auch zu Fehlermeldungen kommen.
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
General



Anmeldungsdatum: 26.11.2006
Beiträge: 149

BeitragVerfasst am: 02.03.2007, 18:21    Titel: Antworten mit Zitat

ja kein thema zwinkerngrinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz