Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
General
Anmeldungsdatum: 26.11.2006 Beiträge: 149
|
Verfasst am: 01.03.2007, 18:36 Titel: Kontrolle einer Datei |
|
|
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 |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 01.03.2007, 18:40 Titel: |
|
|
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 |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 01.03.2007, 18:41 Titel: |
|
|
versuch mal
elseif dir("wort.bin")<>"" then
stat
elseif dir("wort.bin")="wort.bin" then"
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 01.03.2007, 18:44 Titel: |
|
|
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 |
|
 |
General
Anmeldungsdatum: 26.11.2006 Beiträge: 149
|
Verfasst am: 01.03.2007, 19:25 Titel: |
|
|
ah ok das sind plausible antworten und auch möglichkeiten werde es umsetzen, danke |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 01.03.2007, 22:45 Titel: |
|
|
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 |
|
 |
General
Anmeldungsdatum: 26.11.2006 Beiträge: 149
|
Verfasst am: 02.03.2007, 15:43 Titel: |
|
|
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 |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 02.03.2007, 15:50 Titel: |
|
|
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 |
|
 |
General
Anmeldungsdatum: 26.11.2006 Beiträge: 149
|
Verfasst am: 02.03.2007, 16:04 Titel: |
|
|
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 |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 02.03.2007, 16:06 Titel: |
|
|
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 |
|
 |
General
Anmeldungsdatum: 26.11.2006 Beiträge: 149
|
Verfasst am: 02.03.2007, 16:09 Titel: |
|
|
achso alles klar also was wäre icn meinem fall besser ne funbction oder nen sub
?? hmm ma gucken |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 02.03.2007, 16:12 Titel: |
|
|
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 |
|
 |
General
Anmeldungsdatum: 26.11.2006 Beiträge: 149
|
Verfasst am: 02.03.2007, 16:13 Titel: |
|
|
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 |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 02.03.2007, 16:18 Titel: |
|
|
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 |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 02.03.2007, 17:28 Titel: |
|
|
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!
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 |
|
 |
General
Anmeldungsdatum: 26.11.2006 Beiträge: 149
|
Verfasst am: 02.03.2007, 18:21 Titel: |
|
|
ja kein thema   |
|
Nach oben |
|
 |
|