Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


hjälp med att loopia igenom 2 textfiler.

Postades av 2008-11-15 17:53:33 - Anders Hydén, i forum asp - allmänt, Tråden har 7 Kommentarer och lästs av 1108 personer

Scenario:
Varje timma skickar jag två mail, ett till varje e-postadress.
I samband med att mailet skickas så skapas en logfil, log_sent.txt
När mailet tas emot så genereras en motsvarande logfil, log_revied.txt
Lograderna är formaterade så här:
åååå-mm-dd hh:mm:ss;epostadress;ticket (ticket är 25 tecken lång)

Nu behöver jag göra följande:
1) Läsa in log_sent.txt
2) Läsa in log_recived.txt
3) Välja första raden i log_sent.txt
4) Leta efter raden i log_recived.txt där tickten motsvarar den i log_sent
5) Om den hittas så ska det skrivas till en ny logfil, log_status.txt, något i stil med "ok." (vad som ska skrivas kan jag lura ut senare...)
6) Om den inte hittas så ska den fortsätta till nästa rad i log_sent och börja om, samt skriva "ej ok" (typ) i log_status.txt.

Vad jag behöver hjälp med är hur man gör själva loopandet mellan filerna... punkt 5 och 6...


Svara

Sv: hjälp med att loopia igenom 2 textfiler.

Postades av 2008-11-15 18:09:05 - Anders Hydén

Så här långt har jag kommit...
Det är i loopen, en bit ner i koden, som jag fastnar...

	'Skapar objekt för skickat-loggen
	logFileRecived = "log_recived.txt"
	logFileSent = "log_sent.txt"
	Set fileSentObject=Server.CreateObject("Scripting.FileSystemObject")
	Set sentFile=fileSentObject.OpenTextFile(Server.MapPath(logFileSent), 1)
	
	'Skapar objekt för mottaget-loggen
	Set receivedFileObject=Server.CreateObject("Scripting.FileSystemObject")
	Set receivedFile=receivedFileObject.OpenTextFile(Server.MapPath(logFileRecived), 1)
	
	'Loopa igenom båda filerna	
	do while sentFile.AtEndOfStream = false and receivedFile.AtEndOfStream = false
		'skapar upp arrayerna
		sentArray = Split(sentFile.readline, ";")
		receivedArray = Split(receivedFile.readline, ";")
		
		
		'arrayer...
		sentArray(0) ' datum och tid skickat
		receivedArray(0) ' datum och tid mottaget
		sentArray(1) ' epostadress skickat
		receivedArray(1) 'epostadress mottaget
		sentArray(2) 'ticket skickat
		receivedArray(2)  'ticket mottaget

	loop

	'Stänger och nollar objekten
	sentFile.Close
	receivedFile.Close
	Set sentFile=Nothing
	Set fileSentObject=Nothing
	Set receivedFile=Nothing
	Set receivedFileObject=Nothing


Svara

Sv: hjälp med att loopia igenom 2 textfiler.

Postades av 2008-11-16 08:48:14 - Tommy Leandersson

Har du tusen rader i "log_sent.txt" och sen ska du gå igenom "log_revied.txt" för varje rad så har du många rader som ska gå igenom.
Ligger dessa kvar i filerna och du läser in raderna i varje loopsteg för att genomföra kollen så skulle inte jag vilja ligga på samma webserver med mina sidor. Beroende på filernas storlek så skulle man kunna lagra "log_revied.txt" i en textsträng (finns begränsningar på antalet tecken) och med hjälp av "inStr" kan jag snabbt se om raderna i "log_sent.txt" finns med i "log_revied.txt". Genom att kolla om rad1 finns med så kollar man:

if InStr(log_revied,checkRow) > -1 then 'Raden finns med...

Annat alternativ är att du lagrar alla rader i "log_revied.txt" i en array och tar fram rad för rad i "log_sent.txt" och då går igenom arrayen istället. Samma sak här som jag funderar på hur många rader filen är på om det går att lagra alla i en array.

Men det bästa alternativet i mina ögon är att ha all denna information i en databas istället. Lätt JOIN kan tala om för dig antalet som har en koppling, utan att göra en 3:e fil. Lätt SQL-sats så kan man ta fram alla "ticket" för en specifik period. Du kan ta fram alla på en specifik epost-adress m.m. Du kan som sagt var plocka fram enkel statistik genom att ändra en SQL-sats.

Hur många gånger kommer du att läsa och gå igenom dessa filer? Växer filerna konstant eller går man in och raderar dessa på alla som blivit markerad "ok" med jämna mellanrum?


Svara

Sv:hjälp med att loopia igenom 2 textfiler.

Postades av 2008-11-16 17:13:39 - Anders Hydén

I optimalt fall så innehåller varje fil 336 rader.
logfilerna återställs varje vecka, så dom kommer aldrig att vara större än så.

Att använda sig av databas tror jag inte är optimalt. även om det hade gjort saker och ting betydligt enklare vid själva urvalet.
Om jag ska använda mig av en databas måste jag skriva en rutin för att importera log-filerna i databasen per automatik... men det kanske inte är så svårt?

Logfilerna kommer att gås igenom en gång / vecka.

Varje timma fylls log_sent.txt på med 2 rader kod, och i optimala fall så fylls log_recived.txt på med samma info.
Varje söndag så ska dessa sammanföras och generera en "total-logg" (ny log-fil varje vecka.)


Svara

Sv: hjälp med att loopia igenom 2 textfiler.

Postades av 2008-11-16 18:50:53 - Tommy Leandersson

Vad har du som skapar loggfilerna? Är det ett externt program som skapar dessa eller ligger det i din ASP-kod?

Om dom inte är större än de antalet rader så bör det inte vara några problem att spara ner filerna i en array. Enklast är att läsa in filerna och sen lägga till något, t.ex. #!# mellan raderna. Kör sedan SPLIT på #!# och du har dessa i en array.

For i = 0 to Ubound(searchArray)
For y = 0 to Ubound(foundArray)
if searchArray(i) = foundArray(y) then
'Save in new file
Exit For
end if
Next
Next

Om allt ligger i ordning så skulle man kunna lägga in detta för att slippa läsa införsta raderna hela tiden (byt ut koden innanför första FOR-satsen...):

For y = startSearchIndex to Ubound(foundArray)
if searchArray(i) = foundArray(y) then
'Save in new file
startSearchIndex = y
Exit For
end if

Du borde även lätt kunna köra log_sent.txt till en array och och "log_recived.txt" i en lång string och då använda dig utav inStr.

For i = 0 to Ubound(searchArray)
if InStr(searchArray(i), logRecived) > -1 then
'Save in new file
end if
Next

Kan hända att du får switcha på "searchArray(i)" och "logRecived".


Svara

Sv: hjälp med att loopia igenom 2 textfiler.

Postades av 2008-11-16 21:11:33 - Martin Adrian

Jag hade nog gjort ungefär så här: (otestat)
<code>
Set sent = CreateObject("Scripting.Dictionary")
Do While Not sentFile.AtEndOfStream
splitsent = Split(sentFile.ReadLine,";")
sent.Add splitsent(2), Nothing
Loop

Do While Not receivedFile.AtEndOfStream
splitrcv = Split(receivedFile.ReadLine,";")
if sent.Exists(splitrcv(2))
statusfile.Write "ok"
Else
statusfile.Write "ej ok"
End If
Loop
</code>


Svara

Sv: hjälp med att loopia igenom 2 textfiler.

Postades av 2008-11-16 21:11:33 - Martin Adrian

Jag hade nog gjort ungefär så här: (otestat)
<code>
Set sent = CreateObject("Scripting.Dictionary")
Do While Not sentFile.AtEndOfStream
splitsent = Split(sentFile.ReadLine,";")
sent.Add splitsent(2), Nothing
Loop

Do While Not receivedFile.AtEndOfStream
splitrcv = Split(receivedFile.ReadLine,";")
if sent.Exists(splitrcv(2))
statusfile.Write "ok"
Else
statusfile.Write "ej ok"
End If
Loop
</code>


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 153
27 952
271 704
822
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies