Hej! nja... jag är inte så säker på exakt vad syftet är.. eftersom Om det är registerfiler så är de förhoppningsvis sorterade. Hjälp med gemförelse
Jag har läst in 2st mycket stor fil (runt 40mb).. som jag ska gemföra med
varan.. (det är register-filer)... jag gemför bara åt ena hållet... så
fil2 läser jag bara in i en 40mb stor string, och fil1 läses också in i en
string fast sen splittas den upp i en array (varje nyckel får en post i
arrayen)... sen kör jag detta:
String1 = [hela fil2]
Array1 = [uppsplittat fil1]
For Each Key In Array1
If InStr(1, String1, Key) = 0 Then
Found = Found + 1 'Hittar en skilnad
End If
Next AA
det enda problemet med detta är att det tar längre och längre tid...
jag tror det beror på att det söker längre och längre bak i String1..
så min fråga är... går detta att lösa så det går fortare??..
Tacksam för alla svar...
/Johan.NETSv: Hjälp med gemförelse
jag ska göra programmet för att hjälpa till när vi skapar våra
installations-program här på jobbet.... (jag är inte så involverad i det)
men programmet ska känna av om det kommit några nya nycklar
i registret som vi ska ta hänsyn till.... osv...
men den lösningen jag gjorde tar lite lång tid...
ingen som vet hur man kan få det snabbare??
/Johan.NETSv: Hjälp med gemförelse
Nedan kommer ett förslag till lösning. Obs detta är ingen färdig kod utan snarare en algoritm. Vill man hålla reda på radnummer och position i fil så kräver detta lite mer jobb men inte speciellt mycket. Sedan kan man alltid diskutera sorteringsalgoritmer och datastrukturer.
Lägg in filerna i var sin array (rad för rad).
Sortera respektive array om det inte redan är sorterat.
i = 1
j = 1
while i <= antal rader i fil a and j <= antal rader i fil b
Om rada(i) = radb(j) så
// raderna är lika
i = i+1
j = j+1
annars om rada(i) > radb(j) så
skriv ut radb(j) eftersom denna är en skillnad
j = j+1
annars
skriv ut rada(i) eftersom denna är en skillnad
i = i+1
wend
om i <= antal rader i fil a så
skriv ut resterande rader i fil a efteersom dessa inte finns i fil b
om j <= antal rader i fil b så
skriv ut resterande rader i fil b eftersom dessa inte finns i fil a
/CO