Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 241131 (2567)
  Suchen
 Zurück zur Übersicht
 AutorThema: FindFirst / FindNext - Problem
Mike Narr
Datum:21.05.02 21:24 Antwortenals Email verschicken (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


Alexander Schoenfeld
Datum:22.05.02 08:28 Antwortenals Email verschicken (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


Alexander Schoenfeld
Datum: 22.05.02 08:31 Antwortenals Email verschicken (alexander.schoenfeld@chronologic.de) 


Nochmal ich ;)

das "elseif" muss durch ein "else" ersetzt werden!

Mit freundlichem Gruss / kind regards,
Alexander Schoenfeld

Email alexander.schoenfeld@chronologic.de


 Zurück zur Übersicht