Avatar billede hanbo Nybegynder
06. august 2004 - 01:19 Der er 10 kommentarer og
4 løsninger

Indlæsning af komma-fil, med ukendt filnavn.

C5 3.0

Jeg har lavet en lille kørsel, der overvåger en bestemt mappe, hvor et andet web-baseret program afleverer en komma-fil. Dette virker i princippet helt fint. Dog har jeg nu et ønske om at de filer der afleveres skal hedde noget forskelligt. Det eneste jeg kender i C5 er placeringen + extention.

Hvordan løser jeg dette ?
Avatar billede jasman Nybegynder
06. august 2004 - 08:12 #1
Øhhh ... vil du omdøbe filerne fra c5 eller ?
Avatar billede pct Nybegynder
06. august 2004 - 08:45 #2
Når du har indlæst en given fil, forsvinder den så fra mappen?

Per :o)
Avatar billede hanbo Nybegynder
06. august 2004 - 09:14 #3
Til Jasman,
jeg vil helst undgå at omdøbe filerne til et bestemt filnavn, for derefter at indlæse dette, da der på sigt kan komme flere C5 Sessions, der kigger i mappen. Så tanken var mere om jeg kunne undersøge hvilke filer der lå i mappen, med en bestemt extention.


Til Pct,
Ja, filen bliver fjernet så snart den er behandlet.
Avatar billede jasman Nybegynder
06. august 2004 - 09:33 #4
Er du bekendt med opsamling af data i et temporær kartotek ?
Så kan jeg fortælle dig hvordan du kan lave et par programmer som kan bygge en liste over filer i et givent katalog i sådan et kartotek ?

Så kan du løbe listen af filnavne igennem og gøre ting ved filerne på den måde.
Avatar billede jasman Nybegynder
06. august 2004 - 09:34 #5
Problemet er, at jeg kun har en XAL så jeg kender ikke lige tabelnavnene i C5, så jeg kan ikke lige producere en komplet løsning, men principperne for at kode er jo de samme.
Avatar billede Slettet bruger
06. august 2004 - 09:42 #6
En løsning på at indlæse alle filer som findes i en mappe kunne være følgende:

STR  99 &Filnavn
STR  99 &Path = 'c:\\mappe\\'

PROCESS 1 'MODE=CLEAR "COMMAND=DIR /b /a-d '+&Path+'*.* > '+&Path+'dir.txt'
READ &Path+'dir.txt' AS TEXT INTO (&Filnavn) 
  READ &Filnavn AS ....
  ...
  END
END
Avatar billede jasman Nybegynder
06. august 2004 - 09:45 #7
Tjaeeh ... eller

En Kørsel (DirScanner):
SET DIRECTORY("","C:\\mappe\\*.ext","XAL=FileHandler",8,0,1)

Og en anden kørsel (FileHandler):
READ &PARM AS ....
  // Processing of file
END

Ville nok være lidt pænere da det ikke indebærer direkte kald til operativsystemet.
Avatar billede jasman Nybegynder
06. august 2004 - 09:46 #8
Og så skal man selvfølgelig kør DIRSCANNER for at opnå det ønskede nemlig processing af filerne med ekstension .ext i kataloget c:\mappe.
Avatar billede hanbo Nybegynder
06. august 2004 - 09:53 #9
Til Jasman,

det lyder helt fint, jeg kender også lidt til XAL, og midlertidige filer.

Så hvis du bare kalder det temporære kartotek for 'TempKart', så skal jeg finde ud af hvilket kartotek jeg benytter.

Min nuværende løkke til indlæsning ser ud som nedenstående:

---------
IF #FileExists(#VAR_RequestFile) THEN
  READ #VAR_RequestFile AS COMMA INTO
                        (&PARM1,
                        &PARM2,
                        &PARM3,
                        &PARM4,
                        &PARM5,
                        &PARM6,
                        &PARM7,
                        &PARM8,
                        &PARM9)
  END
  #SolvexActions(&Parm1,&Parm2,&Parm3,&Parm4,&Parm5,&Parm6,&Parm7,&Parm8,&Parm9)
  #FileDelete(#VAR_RequestFile)
ENDIF
---------

Problemet her er at min #VAR_RequestFile, har et fast defineret filnavn !!!
Avatar billede Slettet bruger
06. august 2004 - 09:58 #10
Til Jasman
Fin løsning ;-)
Avatar billede jasman Nybegynder
06. august 2004 - 09:59 #11
Hvis vi nu forudsætter at den kørsel du lige har listet hedder x, så
tror jeg såmænd bare at du kan nøjes med at lave endnu en kørsel som hedder DIRSCANNER som indeholder følgende (Ja faktisk kun en linie):
SET DIRECTORY("","C:\\mappe\\*.ext","XAL=x",8,0,1)

x skal så lige ændres til:
IF #FileExists(&PARM) THEN
  READ &PARM AS COMMA INTO
                        (&PARM1,
                        &PARM2,
                        &PARM3,
                        &PARM4,
                        &PARM5,
                        &PARM6,
                        &PARM7,
                        &PARM8,
                        &PARM9)
  END
  #SolvexActions(&Parm1,&Parm2,&Parm3,&Parm4,&Parm5,&Parm6,&Parm7,&Parm8,&Parm9)
  #FileDelete(&PARM)
ENDIF

Så skal du bare køre kørslen DIRSCANNER

Directory funktionen i kørslen DIRSCANNER undersøger mappen c:\mappe for alle filer der har ekstension .ext og for hver funden fil, fyrer den så xal-kørslen X af, hvor det fundne filnavn bliver overført til x i variablen &PARM.

Håber det funker.
Avatar billede jasman Nybegynder
06. august 2004 - 09:59 #12
Til rahp
Tak skal du have :).
Avatar billede hanbo Nybegynder
11. august 2004 - 11:58 #13
Til jasman. Tak for svaret, det virker perfekt.
Jeg giver dog raph 20 point for også at bidrage til løsningen.

Hanbo
Avatar billede jasman Nybegynder
11. august 2004 - 12:19 #14
Jamen det er helt ok.
Men husk lige at acceptere svaret ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester