Zitat von autobertIch hatte dieselben Probleme mit dem Skript:
Ein einfügen von:
Codeim Kopf des Skriptes und Problem ist verschwunden. Mein Consolenoutput von Musashi 's Skript (mit obigem Zusatz):
Hi autoBert !
Laut AutoIt3Wrapper_Directives ist der Defaultwert für #AutoIt3Wrapper_UseX64 = N (No) !
Er muss daher eigentlich nicht extra mit #AutoIt3Wrapper_UseX64 = N angegeben werden.
#AutoIt3Wrapper_UseX64 = Y führt auch bei mir zu : "Fehler beim Öffnen der .dbf ..."
Ein Versuch kann aber nicht schaden .
EDIT oberh : Du kannst ja mal folgendes Skript ausprobieren :
AutoIt
#AutoIt3Wrapper_UseX64 = N
#include <Array.au3>
#include "DBF.au3"
#include <StringConstants.au3>
#include <String.au3>
#include "FileSelectFolder.au3"
; Zusammensetzen Ordner + Dateiname
Global $sFileName = @ScriptDir & "\BLP_FLAECHEN.dbf"
; Öffnen der DBF
Global $hDBF = _DBF_Open($sFileName, "rb+")
If $hDBF = 0 Then
MsgBox(4096, "", "Fehler beim Öffnen der .dbf ..." & @CRLF)
Exit
Else
MsgBox(4096, "", "Öffnen der .dbf OK ..." & @CRLF)
ConsoleWrite("Öffnen der .dbf OK ..." & @CRLF) ; *** nur für Testphase
EndIf
; Ermitteln der Datensatzanzahl
Global $iRecordCount = _DBF_GetRecordCount($hDBF)
If $iRecordCount = 0 Then
MsgBox(4096, "", "Fehler bei der Ermittlung der Datensätze in der dbf ..." & @CRLF)
Exit
Else
MsgBox(4096, "", "Anzahl der DS = " & $iRecordCount & @CRLF)
ConsoleWrite("Anzahl der Datensätze = " & $iRecordCount & @CRLF) ; *** nur für Testphase
EndIf
; Ermitteln des Indexes des Feldes "PLANZ"
Global $iField = _DBF_GetFieldIndex($hDBF, "PLANZ")
ConsoleWrite("_DBF_GetFieldIndex = " & $iField & @CRLF) ; *** nur für Testphase
Global $sPLANZ
For $i = 0 To $iRecordCount - 1
; Einlesen der Spalte PLANZ
$sPLANZ = _DBF_ReadStringAttribute($hDBF, $i, $iField)
ConsoleWrite($i & " $sPLANZ = " & $sPLANZ & @CRLF) ; *** nur für Testphase
If StringRight($sPLANZ, 3) <> ".FO" Then
ConsoleWrite("==> Fehler in Datensatz " & $i & ", String endet nicht mit '.FO' ..." & @CRLF)
Else
$sPLANZ = StringMid($sPLANZ, 1, StringLen($sPLANZ) - 3)
ConsoleWrite("==> $sPLANZ = " & $sPLANZ & @CRLF) ; *** nur für Testphase
_DBF_WriteStringAttribute($hDBF, $i, $iField, $sPLANZ)
EndIf
Next
_DBF_Close($hDBF)
Alles anzeigen
Gruß Musashi