DateiPatcher

11/11/2012 03:22 Crack-wtf#1
Hab ein Problem.

Ich will einen Sprachpatcher schreiben, der Zeile für Zeile eine Datei übersetzt.
Er holt sich aus einer datei die übersetzten Variablen, und überschreibt nach und nach die der originalen datei.

Allerdings geht mir das ganze zu langsam.
Ich nutze diese funktion zum bekommen der zeile eines strings.


Diese funktion braucht durchschnittlich 100 ms pro zeile.
Die datei die ich nutze hat 4761 zeilen.

Habe mir das ganze ausgerechnet und komme auf 7 Minuten.

Und das ist mir viel zu langsam.
Hat jemand einen Plan?
11/11/2012 08:28 Achat#2
Öffne die Datei mit
Code:
FileOpen
und schließe sie mit
Code:
FileClose
MfG
11/11/2012 13:30 Crack-wtf#3
Troll wo anders.

Ich habe mir jetzt folgendes gebastelt, und komme auf eine zeit von 1 Minute.


Geht es vielleicht noch schneller, oder kann man aus autoit nicht mehr rausholen?
11/11/2012 13:45 Lawliet#4
Warum "Troll" wo anders? Wenn du file Open nicht nutzt wird die Funktion ohnehin bei jedem Zugriff aufgerufen.
11/11/2012 14:10 Crack-wtf#5
Ach ich seh jetzt was er meint sry.
Ich dachte er will trollen.

Naja aber mit arrays ist es ohnehin schneller als mir fileread etc.
Nur leider nicht schnell genug xD

Das Problem ist, dass manche Zeilen in der datei nicht synchron mit der anderen sind.
Sonst könnte ich einfach die Arrays vergleichen.

PHP Code:
for $i 1 to $langdbo[0]
        
ProgressSet(100/$langdbo[0]*$iRound(100/$langdbo[0]*$i)&"%")
        
$tmp1 _StringBetween(String($langdbo[$i+1]), """=")
        
$tmp2 _StringBetween(String($langpak[$i]), """=")

        If 
$tmp1[0] =  $tmp2[0Then
            $langpak
[$i] = $langdbo[$i+1]
        EndIf
        ;
_ArraySearch($langdbo$langdbo[$i], 0001)
    
Next 
Ab der 6. Zeile sind die zeilen nicht mehr synchron.

Wenn ich allerdings einen array "einschieben" könnte und alle anderen arrays dabei nach vorne verschoben werden, würde es gehen.
Kenne allerdings keine funktion dafür.
11/11/2012 14:22 Achat#6
Quote:
Originally Posted by Crack-wtf View Post
Ich will einen Sprachpatcher schreiben, der Zeile für Zeile eine Datei übersetzt.
Und das ist mir viel zu langsam.
Einzelne Zeilen bekommst du mit
Code:
StringSplit($sString,Chr(13),2)
Von andauernden FileWrites ohne Handle in einer Schleife kann ich dir nur abraten, das ist nämlich sehr langsam. Du könntest am Ende ein mal ein Filewrite machen.

Quote:
Originally Posted by Crack-wtf View Post
Naja aber mit arrays ist es ohnehin schneller als mir fileread etc.
Nur leider nicht schnell genug xD

Das Problem ist, dass manche Zeilen in der datei nicht synchron mit der anderen sind.
Sonst könnte ich einfach die Arrays vergleichen.

PHP Code:
for $i 1 to $langdbo[0]
        
ProgressSet(100/$langdbo[0]*$iRound(100/$langdbo[0]*$i)&"%")
        
$tmp1 _StringBetween(String($langdbo[$i+1]), """=")
        
$tmp2 _StringBetween(String($langpak[$i]), """=")

        If 
$tmp1[0] =  $tmp2[0Then
            $langpak
[$i] = $langdbo[$i+1]
        EndIf
        ;
_ArraySearch($langdbo$langdbo[$i], 0001)
    
Next 
Ab der 6. Zeile sind die zeilen nicht mehr synchron.
Was bedeuten denn deine Variablen? Wo ist da jetzt deine Datei, die du einlesen willst?

MfG