Autor | Thema: FindFirst / FindNext - Problem | | Datum:21.05.02 21:24 
(mnarr@gmx.de) | |
Ich habe folgendes Problem: Das Programm soll Dateien (extension$) von einen Verzeichniss in ein Arbeitsverzeichniss (qlkpfad$) kopieren und umbenennen. Die Datei soll dann einen festgelegten Dateinamen (pkr$) erhalten. Danach wird die Datei von MS Excel ausgewertet und in eine Gesammtstatistik übernommen. Ist dies abgeschlossen soll die Datei ihren ursprünglichen Namen wieder erhalten und in einen Archivverzeichniss (archivpfad$) verschoben werden.
Nun das Problem :
1. Durchlauf - FindFirst funktioniert tadellos
1. Durchlauf - FindNext funktioniert bis vermutlich Zeile 23
Die Dateien werden nach dem bearbeiten nicht mehr umbenannt und in das Archiv verschoben.
Die Schleife arbeitet alle anderen Dateien noch Ordnungsgemäss ab.
Ich vermute das es irgendwie mit den Befehlen Assign# und Rename# zusammenhängt. Die Hilfedatei hat mir auch nicht geholfen.
Ich benutze Profan 4.5 und dies ist mein erstes Projekt mit Profan. Bin also kein Profi.
Zuerst werden die vorhandenen Dateien mittels FindFirst / FindNext - Schleife gezählt. Die Anzahl der Dateien befindet sich in der Variablen "zaehler%".
1 let anzahlist%=0
2 let dateiname$=@FindFirst$(extension$)
3 let rename$=qlkpfad$
4 let rename$=@add$(rename$,pkr$)
5 inc anzahlist%
6 Assign #anzahlist%,dateiname$
7 Rename #anzahlist%,rename$
8 EXCELUEBERTRAGUNG
9 Assign #anzahlist%,rename$
10 let ziel$=""
11 let ziel$=@add$(archivpfad$,dateiname$)
12 rename #anzahlist%,ziel$
13 SCHLEIFE:
14 if @equ(anzahlist%,zaehler%)
15 goto "ENDE"
16 elseif
17 let dateiname$=@FindNext$()
18 let rename$=qlkpfad$
19 let rename$=@add$(rename$,pkr$)
20 inc anzahlist%
21 Assign #anzahlist%,dateiname$
22 Rename #anzahlist%,rename$
23 EXCELUEBERTRAGUNG
24 Assign #anzahlist%,rename$
25 let ziel$=""
26 let ziel$=@add$(archivpfad$,dateiname$)
27 rename #anzahlist%,ziel$
28 endif
29 goto "SCHLEIFE"
30 ENDE:
31 endif
|
| | Datum:22.05.02 08:28 
(alexander.schoenfeld@chronologic.de) | |
Hallo Mike !
Hab auf anhieb mal ein paar kleinere Fehler gefunden ;)
1. Verwende nach möglichkeit kein GOTO, sondern While / Wend
2. Du solltest nicht in einer If-Abfrage ein GOTO verwenden
3. Du musst alle Dateien die du mit ASSIGN geöffnet hast auch wieder mit CLOSE #N wieder schliessen
4. Du kannst nur Dateien von 1 bis 15 öffnen, du könntest aber immer #1 verwenden ( wenn du CLOSE verwendest )
Hier dein Code ein wenig umgearbeitet :)
let anzahlist%=0
let dateiname$=@FindFirst$(extension$)
let rename$=qlkpfad$
let rename$=@add$(rename$,pkr$)
inc anzahlist%
Proc Prozedur1
Assign #anzahlist%,dateiname$
Rename #anzahlist%,rename$
Close #anzahlist%
EndProc
Prozedur1
Proc EXCELUEBERTRAGUNG
Assign #anzahlist%,rename$
let ziel$=""
let ziel$=@add$(archivpfad$,dateiname$)
rename #anzahlist%,ziel$
close #anzahlist%
EndProc
Declare Ende%
WhileNot Ende%
if @equ(anzahlist%,zaehler%)
let Ende&% = 1
elseif
let dateiname$=@FindNext$()
let rename$=qlkpfad$
let rename$=@add$(rename$,pkr$)
inc anzahlist%
Prozedur1
EXCELUEBERTRAGUNG
endif
Wend
Mit freundlichem Gruss / kind regards,
Alexander Schoenfeld
Email alexander.schoenfeld@chronologic.de
|
| |
|