# Scriptproblem



## skyvan (9 August 2011)

Hallo Leute

ich habe ein MP277

und dieses Script, welches ich mit DINO´s Hilfe erstellt habe.

Mein Problem ist das die Datei nicht erstellt wird.
Vielleicht hat ja einer von euch ne Idee. Das Script wird bei Wertänderung von der Variable "DB 010 - Anlagen DB.Datenarchiv1" aufgerufen.


```
'Skript "DatenArchivierung von Marco" / DI - 15.02.2011
'=========================================================================================
 
  Dim ArchivSystemObjekt, ArchivDateiObjekt, DateiName, DateiTitel, TabellenKopf
 
' File(SystemObject) erstellen
' ----------------------------
  Set ArchivSystemObjekt = CreateObject("FileCtl.FileSystem")
  Set ArchivDateiObjekt = CreateObject("FileCtl.File")
 
' Archivierungspfad und Dateiname zusammensetzen
' ----------------------------------------------
  DateiName = "\Storage Card MMC\" 
                                                                                  &_ 
             SmartTags("DB 010 - Anlagen DB.Archivname") &"_"&_ 
            SmartTags("DB 010 - Anlagen DB.Batchnummer")     &_ 
             ".csv" 
 
' Datei öffnen bzw. erstellen, wenn sie noch nicht existiert
' ----------------------------------------------------------
  ArchivDateiObjekt.open DateiName, 8                                                                                    
 
' Vorkopf schreiben
' -----------------
' If ArchivSystemObjekt.FileLen(DateiName) = 0 Then (ist eine Möglichkeit)
 
 If SmartTags > 2 Then
 
            ' Dateititel zusammenstellen
            ' ---------------------------
              DateiTitel =  Chr(10)& _ 
                     "Zaehlerarchiv;"
 
 
            ' Tabellenkopf zusammenstellen
            ' ----------------------------
              TabellenKopf =         "Datum / Zeit;"                  & _
                              "12.050.005 - Temp. Heizmantel;" & _
                              "12.050.004 - Temp. Produkt;"    & _
                              "12.050.001 - Druck Behälter;"   & _ 
                              "12.050.007 - Drehzahl Rührwerk;"
            ' Vorkopf schreiben
            ' ----------------- 
               ArchivDateiObjekt.lineprint  Chr(10)&("Dateiname:;" & DateiName)
               ArchivDateiObjekt.lineprint (DateiTitel)                                                
               ArchivDateiObjekt.lineprint ("Produktname:;" & SmartTags("DB 010 - Anlagen DB.Datensatzname"))
               ArchivDateiObjekt.lineprint ("BatchNr.:;"    & SmartTags("DB 010 - Anlagen DB.Batchnummer"))
    ArchivDateiObjekt.lineprint(TabellenKopf)                                                    
 End If
 
' Werte der Variablen in die Archivdatei schreiben
' ------------------------------------------------
  ArchivDateiObjekt.lineprint(CStr(Now)                                      & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.Maschinen[1]"))   & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.Maschinen[2]"))   & ";"     &_     
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.Maschinen[3]"))   & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.Maschinen[4]"))   & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.Maschinen[5]"))   & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.Maschinen[6]"))   & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.Maschinen[7]"))   & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.IO[1]"))          & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.IO[2]"))          & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.IO[3]"))          & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.IO[4]"))          & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.NIO[1]"))         & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.NIO[2]"))         & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.NIO[3]"))         & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.NIO[4]"))         & ";") 
' Datei schließen
' ---------------
  ArchivDateiObjekt.Close
 
' Triger rücksetzen
' -----------------
  SetValue SmartTags("DB 010 - Anlagen DB.Datenarchiv1"), 0
 
' Verwendeten Speicher wieder freigeben
' -------------------------------------
  Set ArchivDateiObjekt  = Nothing
  Set ArchivSystemObjekt = Nothing
```
 
Gruß Marco


----------



## Samiel (9 August 2011)

```
If SmartTags > 2 Then
```
wenn die Zeile so da steht, wird sie wohl das Skrpt stören, weil du da wohl was verschluckt hast.

Kleiner Vorschlag an dieser Stelle:

```
If ArchivSystemObjekt.FileLen(DateiName) = 0 Then   
   ArchivDateiObjekt.lineprint(Kopf...)     
End If
```
Hast du geprüft ob das Skript auch abgearbeitet wird?


----------



## skyvan (9 August 2011)

es wird bis zu erstellen der Datei abgearbeitet und dann hört es auf zu arbeiten.

da steht drin

 If SmartTags("DB 010 - Anlagen_DB.Datenarchiv1") > 2 Then

Gruß Marco


----------



## Samiel (9 August 2011)

```
DateiName = "\Storage Card MMC\"  &_ 
   [COLOR=Red]CStr[/COLOR](SmartTags("DB 010 - Anlagen DB.Archivname")) &"_"&_ 
   CStr(SmartTags("DB 010 - Anlagen DB.Batchnummer"))     &_ 
   ".csv"
```
Würd ich dann nochmal vorschlagen
Es ist vllt auch noch hilfreich ne Abfrage für die eingelegte Speicherkarte einfügen

```
HilfsVariable = filesystem.dir ("\Storage Card MMC") 
If HilfsVariable = "" Then 'Ablagepfad nicht vorhanden 
Call ShowSystemAlarm ("Keine Speicherkarte vorhanden") 
Else ... Datei Schreiben
End If
```


----------



## skyvan (9 August 2011)

Hi Samiel

so sieht der Code jetzt aus

leider erstellt er die Datei immernoch nicht.

Keine Ahnung woran es liegt bin langsam am Ende mit meinem Latein.


```
'Skript "DatenArchivierung von Marco" / DI - 15.02.2011
'=========================================================================================
 
  Dim ArchivSystemObjekt, ArchivDateiObjekt, DateiName, DateiTitel, TabellenKopf
 
' File(SystemObject) erstellen
' ----------------------------
  Set ArchivSystemObjekt = CreateObject("FileCtl.FileSystem")
  Set ArchivDateiObjekt = CreateObject("FileCtl.File")
 
' Archivierungspfad und Dateiname zusammensetzen
' ----------------------------------------------
  DateiName = "\Storage Card MMC\" &_ 
           CStr (SmartTags("DB 010 - Anlagen DB.Archivname")) &"_"&_ 
          CStr (SmartTags("DB 010 - Anlagen DB.Batchnummer")) &_ 
            ".csv" 
 
' Datei öffnen bzw. erstellen, wenn sie noch nicht existiert
' ----------------------------------------------------------
  ArchivDateiObjekt.open DateiName, 8                                                                                    
 
' Vorkopf schreiben
' -----------------
If ArchivSystemObjekt.FileLen(DateiName) = 0 Then '(ist eine Möglichkeit)
  ArchivDateiObjekt.lineprint ("Datum / Zeit;"                  & _
                              "12.050.005 - Temp. Heizmantel;" & _
                              "12.050.004 - Temp. Produkt;"    & _
                              "12.050.001 - Druck Behälter;"   & _ 
                              "12.050.007 - Drehzahl Rührwerk;")
 End If
 If SmartTags("DB 010 - Anlagen DB.Datenarchiv1") > 2 Then
 
            ' Dateititel zusammenstellen
            ' ---------------------------
              DateiTitel =  Chr(10)& _ 
                     "Zaehlerarchiv;"
 
 
            ' Tabellenkopf zusammenstellen
            ' ----------------------------
              TabellenKopf =         "Datum / Zeit;"                  & _
                              "12.050.005 - Temp. Heizmantel;" & _
                              "12.050.004 - Temp. Produkt;"    & _
                              "12.050.001 - Druck Behälter;"   & _ 
                              "12.050.007 - Drehzahl Rührwerk;"
            ' Vorkopf schreiben
            ' ----------------- 
               ArchivDateiObjekt.lineprint  Chr(10)&("Dateiname:;" & DateiName)
               ArchivDateiObjekt.lineprint (DateiTitel)                                                
               ArchivDateiObjekt.lineprint ("Produktname:;" & SmartTags("DB 010 - Anlagen DB.Datensatzname"))
               ArchivDateiObjekt.lineprint ("BatchNr.:;"    & SmartTags("DB 010 - Anlagen DB.Batchnummer"))
    ArchivDateiObjekt.lineprint(TabellenKopf)                                                    
 End If
 
' Werte der Variablen in die Archivdatei schreiben
' ------------------------------------------------
  ArchivDateiObjekt.lineprint(CStr(Now)                                      & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.Maschinen[1]"))   & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.Maschinen[2]"))   & ";"     &_     
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.Maschinen[3]"))   & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.Maschinen[4]"))   & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.Maschinen[5]"))   & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.Maschinen[6]"))   & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.Maschinen[7]"))   & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.IO[1]"))          & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.IO[2]"))          & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.IO[3]"))          & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.IO[4]"))          & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.NIO[1]"))         & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.NIO[2]"))         & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.NIO[3]"))         & ";"     &_
                                       CStr (SmartTags("Zähler\DB 010 - Anlagen DB.Zaehler.NIO[4]"))         & ";") 
' Datei schließen
' ---------------
  ArchivDateiObjekt.Close
 
' Triger rücksetzen
' -----------------
  SetValue SmartTags("DB 010 - Anlagen DB.Datenarchiv1"), 0
 
' Verwendeten Speicher wieder freigeben
' -------------------------------------
  Set ArchivDateiObjekt  = Nothing
  Set ArchivSystemObjekt = Nothing
```
 
wo sollte der Code für die Speicherkarte rein?


----------



## PN/DP (10 August 2011)

skyvan schrieb:


> ich habe ein MP277
> 
> und dieses Script, welches ich mit DINO´s Hilfe erstellt habe.
> 
> Mein Problem ist das die Datei nicht erstellt wird.


Hallo Marco,

ist es das erste Mal, daß Du per Script eine Datei erzeugen willst?
Vielleicht solltest Du nicht gleich alles auf einmal wollen, sondern erst mal mit den Basics anfangen.
Dein Script ist einfach zu lang, um eventuelle Fehler ohne reales Testen zu finden.
Warum Deine Datei nicht erstellt wird kann viele Ursachen haben.

Vermutlich wird Deine Scriptbearbeitung unsaft mit einem Runtime-Fehler abgebrochen.
Damit Du die Fehlermeldungen auch siehst, mach in ein Bild eine Meldeanzeige und/oder in die Vorlage ein Meldefenster rein für die Meldeklasse "System".

Da Du vermutlich ohne Scriptdebugger arbeitest, schreibe testweise Debug-Ausgaben in das Script rein, z.B. mit "ShowSystemAlarm <meldetext>".

Schreibe zuerst nur das Grundgerüst des Scriptes und teste es.
Danach ersetze den festen Dateiname durch Deinen variablen Dateiname aus Smarttags und teste wieder.
Ersetze nach und nach alle konstanten Strings durch den Inhalt Deiner Smarttags und erweitere das Script und teste wieder...

```
Const ForAppend = 8
Dim ArchivDateiObjekt, MCslot, DateiName 

MCslot = "\Storage Card MMC"
DateiName = "test.txt"  'hier später den Dateiname dynamisch zusammenstellen

If Not FolderExist(MCslot) Then
    ShowSystemAlarm "Keine Memorycard gefunden. Kann '" & DateiName & "' nicht speichern."
    ' Exit Sub
Else
    DateiName = MCslot & "\" & DateiName
    Set ArchivDateiObjekt = CreateObject("FileCtl.File")
    ArchivDateiObjekt.Open DateiName, ForAppend
    ArchivDateiObjekt.LinePrint "Hello World!"
    ArchivDateiObjekt.LinePrint "Produktname: " & SmartTags("DB 010 - Anlagen DB.Datensatzname")
    ArchivDateiObjekt.Close

    ShowSystemAlarm "Datei '" & DateiName & "' erfolgreich gespeichert."
End If
```
Die Function FolderExist(Path) - welche prüft, ob ein angegebener Ordner existiert oder eine MemoryCard im angegebenen Slot steckt - findest Du in diesem FAQ: Protool/WinCCflex Daten lesen / schreiben mit VB-Script

Möglichkeiten, warum die Datei nicht erstellt wird:
- das Script wird gar nicht aufgerufen
- beim Erstellen der FileCtl-Objekte geht was schief
- es ist keine Memorycard gesteckt oder wird vom Panel nicht erkannt
- die Pfadangabe ist nicht korrekt
- der Dateiname enthält "\", die Ordner existieren aber nicht
- der Dateiname enthält unzulässige Zeichen
- das WinCE mag den Dateiname aus anderen Gründen nicht
- die Datei existiert, kann aber nicht zum Schreiben geöffnet werden
- das Script wird vor dem Erstellen der Datei durch einen Runtime-Error abgebrochen
- ...

Harald


----------



## skyvan (10 August 2011)

Hallo Harald

wie du schon richtig vermutet hast ist es das erste Script was ich erstellen muß was eine Datei erzeugt.

Wie es immer ist beschäftigt man sich erst immer dann damit wenn die Zeit schon abgelaufen ist. 

Warum bei mir der z.B. der Aufruf "If Not FolderExist" als fehlerhaft angezeigt wird ist mir zum Beispiel auch ein Rätsel.

Gruß Marco


----------



## BennoM (10 August 2011)

Hallo Marco,

wenn ich mich richtig erinnere, gibt es die Funktion FolderExist unter WinCE (MP277) nicht.

Mit dem Erstellen von Dateien unter WinCE hatte ich auch schon ein Problem und zwar wurde mit dem Aufruf

```
ArchivDateiObjekt.open DateiName, 8
```
keine neue Datei erzeugt sonder nur eine vorhandene geöffnet um etwas anzuhängen.

Da damals die Zeit auch kanpp war, habe ich zu erst geprüft ob die Datei bereits existiert und etwas angehängt werden soll, oder ob eine neue Datei erstellt werden muß.

```
'Datei öffnen
 'Prüfen ob Datei vorhanden
 If ArchivDateiObjekt.Dir("\Storage Card MMC\Archiv.csv") = "" Then
 ArchivDateiObjekt.open "\Storage Card MMC\Archiv.csv", 2
 Else
 ArchivDateiObjekt.open "\Storage Card MMC\Archiv.csv", 8 
 End If
```
 
Es gibt bestimmt eine bessere Lösung aber da es wie immer schnell gehen musste, war das okay. 

Wenn das funktioniert, würde ich als nächstes den Dateinamen variabel gestalten und dann weiter testen.

Gruß

Benny


----------



## skyvan (10 August 2011)

Hi BennoM

Danke erst einmal. Ich werde es sofort einmal testen


Gruß Marco


----------



## BennoM (10 August 2011)

Hallo Marco,

mir ist gerade aufgefallen das in meinem Beispiel noch ein Fehler drin ist.
Die Dir Funktion gehört zum FileSystem-Objekt und nicht zum File-Objekt

So sollte es funktionieren:


```
'Datei öffnen
 'Prüfen ob Datei vorhanden
 If [COLOR=red]ArchivSystemObjekt.Dir[/COLOR]("\Storage Card MMC\Archiv.csv") = "" Then
 ArchivDateiObjekt.open "\Storage Card MMC\Archiv.csv", 2
 Else
 ArchivDateiObjekt.open "\Storage Card MMC\Archiv.csv", 8 
 End If
```
 
Sorry

Gruß

Benny


----------



## skyvan (10 August 2011)

Hi BennoM

leider klappt es immernoch nicht. 

da alle anderen scripte funktionieren wenn ich sie brauche gehe ich nicht davon aus das es ein Problem ist wenn es auf dem PC simuliert wird.

Falls jemand etwas komplettes hätte (Dateierstellung) wäre ich sehr sehr dankbar.

Gruß Marco


----------



## BennoM (10 August 2011)

Hi,

also ich hab jetzt mal ein Skript rausgesucht und alles entfernt was nicht direkt mit dem Dateihandling zu tun hat.


```
Dim fso, f
 
'Dateisystemobjekt erstellen
'-------------------------------
Set fso = CreateObject("FileCtl.FileSystem")
 
'Dateiobjekt erstellen
'---------------------
Set f = CreateObject("FileCtl.File")
 
'Logfile öffnen und Eintragung vornehmen
'-----------------------------------------
 
 'Logfile öffnen
 'Prüfen ob Logfile vorhanden
 If fso.Dir("\Storage Card MMC\Log.csv") = "" Then
 f.open "\Storage Card MMC\Log.csv", 2
 Else
 f.open "\Storage Card MMC\Log.csv", 8 
 End If
 
 'Vorgang in Logfile eintragen
 'Aufbau der Log Datei:
 '| Datum | Anfangszeit | Endzeit | Vorgang
 f.LinePrint(SmartTags("Anfang") & ";" & SmartTags("Ende") & ";" & SmartTags("Vorgang"))
 
 'Logfile schließen
 f.Close
```
 
Ich würde dir empfehlen ein echtes MP277 zum testen zu verwenden. Das Dateihandling im Simulator ist anders als das des MP277. 
Bei mir hat das schreiben bzw. lesen einer Datei in der Simulation eines MP377 (Dateihandling im Skript für WinCE programmiert) nie funktioniert.

Gruß

Benny


----------



## volker (10 August 2011)

bei der simulation eines wince-panels auf einem pc wird das scripting des pc verwendet.  

Set f = CreateObject("FileCtl.File")

verursacht bei der simulation definitiv einen fehler und das script wird abgebrochen.
solltest du systemfehler anzeigen sollte dies auch dort zu sehen sein


----------



## skyvan (10 August 2011)

Hallo und...

Danke euch beiden

gibt es eine möglichkeit das zu umgehen?

@BennoM
das Panel ist schon beim Kunden (mit einer anderen Lösung)

@Volker wird wohl dann das Problem gewesen sein warum es nicht funktionierte.

Ich werde noch einmal alles (hier in Simulation) testen, und wenn ich fertig bin auch das Ergebnis posten.

ich werde sicher noch Fragen haben da wie schon Eingangs erwähnt dies mein erstes Skript in dieser Form ist.

Danke nochmal an euch
Gruß Marco


----------



## PN/DP (10 August 2011)

BennoM schrieb:


> und zwar wurde mit dem Aufruf
> 
> ```
> ArchivDateiObjekt.open DateiName, 8
> ...


Ach ja richtig, bei den Open-Operationen zum lesen oder anhängen muß die angegebene Datei schon existieren. (ob auch beim Öffnen zum schreiben weiß ich jetzt nicht sicher)
Wenn die Datei noch nicht existiert oder aus anderen Gründen nicht im gewünschten Modus geöffnet werden kann (z.B. schreibgeschützt oder schon anderweitig geöffnet), dann gibt es einen Runtime-Error mit meist aussagekräftigem Meldetext. Man muß die Runtime-Error-Meldungen allerdings auch mitkriegen (angezeigt bekommen) oder im Script abfangen.
Willkommen bei der Programmierung von Datei-Operationen, bei denen so ziemlich alles schiefgehen kann!

Runtime-Error-Meldungen anzeigen:
wie schon in #6 geschrieben eine Meldeanzeige und/oder ein Meldefenster anlegen, welche Meldungen der Meldeklasse "System" anzeigen.

Runtime-Error abfangen:

```
' Runtime-Errors sollen das Script nicht abbrechen
On Error Resume Next

' irgendwas tun, was Runtime-Error erzeugen könnte, z.B. Datei öffnen
Set f = CreateObject("FileCtl.File")
f.Open outfile, ForAppend

' eigene Fehlerbehandlung - hier nur Meldung anzeigen und Ende
If Err.Number <> 0 Then
    ShowSystemAlarm "Fehler # " & Hex(Err.Number) & _
        " beim Öffnen '" & outfile & "': " & Err.Description
    Exit Sub
End If
```

Harald


----------



## PN/DP (10 August 2011)

skyvan schrieb:


> Warum bei mir der z.B. der Aufruf "If Not FolderExist" als fehlerhaft angezeigt wird ist mir zum Beispiel auch ein Rätsel.





BennoM schrieb:


> wenn ich mich richtig erinnere, gibt es die Funktion FolderExist unter WinCE (MP277) nicht.


Die Lösung siehe:


PN/DP schrieb:


> Die Function FolderExist(Path) - welche prüft, ob ein angegebener Ordner existiert oder eine MemoryCard im angegebenen Slot steckt - *findest Du in diesem FAQ:* Protool/WinCCflex Daten lesen / schreiben mit VB-Script


Die Function FolderExist(Path) muß als zusätzliches Script in das Projekt eingefügt werden
(oder statt dem Aufruf der Function den relevanten Code direkt in das Script einfügen).
Hier eine Version, welche nur unter WinCE läuft:

```
' Function FolderExist(Path) prüft, ob ein angegebener Ordner existiert
' z.B. ob eine MemoryCard im angegebenen Slot steckt
' oder der angegebene Netzwerk-Pfad erreichbar ist
' Rückgabewert ist True oder False.
' Das Skript läuft nur unter WinCE - nicht in der PC-RT!
' Path darf unter WinCE wildcards *? enthalten
' !!! unter WinCE führt ein Aufruf "If FolderExist(SmartTags("Strinvariable")) ..."
'     zu einem Runtim-Error "ungültiger Procedur-Call"
'     -> SmartTags("Strinvariable") muß explizit einer Skript-Variablen zugewiesen werden !!!
'     -> z.B. path = SmartTags("Strinvariable") : If FolderExist(path) ...  <- das funktioniert
'
Dim fso

FolderExist = False
Set fso = CreateObject("FileCtl.FileSystem")
If fso.Dir(Path) <> "" Then FolderExist = True
```

Harald


----------



## PN/DP (10 August 2011)

skyvan schrieb:


> da alle anderen scripte funktionieren wenn ich sie brauche gehe ich nicht davon aus das es ein Problem ist wenn es auf dem PC simuliert wird.


Doch, es ist ein Problem. Die WinCE-Fileoperationen funktionieren NICHT in der PC-Simulation, weil es unter Win32 das FileCtl-Objekt nicht gibt bzw. anders heißt. Dies wird in der verlinkten FAQ mehrfach erwähnt.



BennoM schrieb:


> Bei mir hat das schreiben bzw. lesen einer Datei in der Simulation eines MP377 (Dateihandling im Skript für WinCE programmiert) nie funktioniert.





skyvan schrieb:


> gibt es eine möglichkeit das zu umgehen?


Noch einmal: siehe die FAQ. Da wird eine Möglichkeit gezeigt, wie man die Scripte so schreibt, daß sie auch in der PC-RT(-Simulation) funktionieren und von Volker ein Stück Code, wie man erkennt, unter welcher Umgebung die RT ausgeführt wird.

Harald


----------



## skyvan (10 August 2011)

sorry Harald

ich stell mich auf dem Gebiet echt doof an. Ich glaube auch nicht das es ein Vorteil ist das Gerät nicht hier zu haben (zum testen). Ich müsste quasi das ganze so schreiben das es in PC-Runtime funktioniert und bevor es eingespielt wird, müsste ich die kritischen Befehle umschreiben.

also könnte doch im Post #1 das skript funktionieren auf dem MP277 ?

Gruß Skyvan


----------



## JesperMP (10 August 2011)

Egal WinCE oder WinXP oder Win7, ON ERROR RESUME NEXT, ist ein *muss*.


----------



## volker (10 August 2011)

die scripte sollten auf allen panels ab OP/TP 270/277 und höher laufen.

einziger unterschied sind die verschiedenen speichermedien.

das solltest du in einer variablen hinterlegen um das später nicht wieder überall ändern zu müssen

also z.b. 
SmartTags("speicherpfad") = "storage card mmc"

und dann später
datei = SmartTags("speicherpfad") & "\meinedatei.txt"
f.open datei, 2



> also könnte doch im Post #1 das skript funktionieren auf dem MP277 ?


nicht ganz. nur wenn die datei bereits existiert.
mode 1=lesen , mode 2=schreiben, mode 8=anhängen

*lies dir endlich den beitrag in der faq durch. der link ist hier mehrfach gepostet worden.*


----------



## skyvan (10 August 2011)

Hallo Volker



> *lies dir endlich den beitrag in der faq durch. der link ist hier mehrfach gepostet worden.*



hab ich schon. Was ich genau bräuchte wäre überschreiben. 

Ist Mode 2 schreiben mit erstellen oder überschreiben gleich zu setzen?

die Frage bleibt, da kann ich das noch ein paar mal durchlesen und wenn ich das nicht testen kann werde ich das ohne Info von euch nicht raus bekommen. 
Wie schon erwähnt ist das mein erstes Projekt wo ich Daten (geordnet) auf den Speicher bringen muss und daher hab ich absolut keinen Plan wie das so mit erstellen der Date funktioniert.

Danke euch allen


----------



## volker (10 August 2011)

> Ist Mode 2 schreiben mit erstellen oder überschreiben gleich zu setzen?


Ja

ich empfehle dir dir irgendein ce-panel (ab270) zu nehmen um das zu testen.
ansonsten, wage ich mal zu behaupten, wirds bei kunden nicht laufen.


----------



## skyvan (11 August 2011)

Hi Volker

ja genau das denke ich auch. Egal, wenn es läuft werde ich es hier posten.

Gruß und Danke noch einmal an alle


----------

