Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 242964 (4400)

| Suchen
| Zurück zur Übersicht

Autor | Thema: FindFirst / FindNext - Problem
Mike Narr
| 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
Alexander Schoenfeld
| 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
Alexander Schoenfeld
| Datum: 22.05.02 08:31 (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