Versuchsingenieure / Produktionsingenieure (m/w)
Prozessentwicklung, Versuchswesen in den Bereichen Messtechnik, Elektronik, Getriebetechnik
über Steinbach Partner Executive Consultants
Region Stuttgart und Unterfranken
Test Engineer (m/w)
Durchführung und Analyse von Versuchen an PKW-Innenraumkomponenten
Johnson Controls Automotive Experienc über Scheerer Werbung GmbH
Burscheid
DIAdem-Version: 11.1 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: -
Beiträge: 1
Registriert seit: Apr 2010
Daten mit veränderlichem Namen einlesen
Hallo zusammen,
wir haben die Aufgabe ein Suchprogramm zu schreiben,
welches eine unterschiedliche Anzahl von Dateien aus einem Ordner einliest.
Das Problem ist, dass sich die Dateinamen ändern können, sodass z.B.
nur die ersten 5 Zeichen gleich bleiben und der Rest sich verändert.
Wenn man es z.B. mit folgender Zeile versucht, erkennt DIAdem das Sternchen nicht als Platzhalter an.
und hat vielleicht jemand noch eine Idee, wie man eine unbekannte Anzahl Dateien mit quasi einem Klick einliest, also den Befehl oben irgendwie in eine Schleife einbindet?
Viele Grüße
26.04.2010, 10:10 (Dieser Beitrag wurde zuletzt bearbeitet: 26.04.2010 10:17 von chaosyeti.)
DIAdem-Version: 11.1 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 1996
Beiträge: 17
Registriert seit: Mar 2010
RE: Daten mit veränderlichem Namen einlesen
Moin,
haben die Dateinamen (also der variable Teil) einen gewissen Rhythmus oder etwas vergleichbares?
Bzw. wurden sie vorher im DIAdem erzeugt?
So, wie Du das da oben gestaltet hast, nimmt er das * als Teil des Namens.
Ich würde den Namen als Variable vorher zusammen setzen, so à la
dim dateiname, sternchen
sternchen = (das mußt Du dann rausfinden oder genauere Infos geben) dateiname = "IP167" & sternchen & ".dat"
Call DataFileLoad(MyFolders(0)&dateiname,"DAT","")
Ich hatte hier ein ähnliches Problem, aber die Dateien zuvor mit DIAdem erzeugt (sprich: gemessen)
'-- Dateien alle in eine aufrufen, angefangen mit 1
Call Data.Root.Clear()
Call DataFileLoad(LastSaved(0),"","")
Data.Root.ChannelGroups(1).Name = "Messung 1"
Call DataFileLoad(LastSaved(1),"","")
Data.Root.ChannelGroups(2).Name = "Messung 2"
Call DataFileLoad(LastSaved(2),"","")
Data.Root.ChannelGroups(3).Name = "Messung 3"
oder einfacher:
'-- Dateien alle in eine aufrufen, angefangen mit 1
Call Data.Root.Clear()
dim i
for i=0 to 2
Call DataFileLoad(LastSaved(i),"","")
Data.Root.ChannelGroups(i+1).Name = "Messung " & (i+1)
next
Oder Du überlegst Dir halt sonst eine Routine, wie Du auf die Namen kommst. Mit FileEx kannst Du auch vorm Öffnen gucken, ob es eine Datei schon gibt.
DIAdem-Version: 2010 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 1995
Beiträge: 7
Registriert seit: Jun 2010
RE: Daten mit veränderlichem Namen einlesen
DIAdem hat für diesen Fall eine Funktion die sich DataFinder nennt. Damit können die Dateien auf der Festplatte indiziert und anschliessend einfach zusammengesucht werden. Voraussetzung ist, dass man die Verzeichnisse im NAVIGATOR als Suchbereiche definiert hat. Ist das passiert, gehts ganz einfach. Weiter unten findet sich ein Beispiel. Der grosse Vorteil der Vorgehensweise ist, dass man schnell und einfach Bedingungen ergänzen kann. Beispielsweise kann man mit einer Zeile Script dafür sorgen, dass nur die Dateien gefunden werden bei der die Eigenschaft "Prüfstandsfahrer" auf "Hans Meier" steht
'--- Search with GUI
Dim oMyQueryForm,oMyDataFinder,oMyConditions,oResult
Set oMyDataFinder= Navigator.Display.CurrDataFinder
Set oMyQueryForm = Navigator.Display.CurrDataFinder.QueryForm
Call oMyQueryForm.Clear
oMyQueryForm.Mode = eAdvancedQueryForm
oMyQueryForm.ReturnType = eSearchFile
Set oMyConditions = oMyQueryForm.Conditions
'--- Fill the query
Call oMyConditions.Add(eSearchFile,"folder","=","D:\Programme\National Instruments\DIAdem 2010\Examples\Data")
Call oMyConditions.Add(eSearchFile,"dataPluginName","=","TDM")
Call oMyConditions.Add(eSearchFile,"fileName","=","Brake_*")
oMyConditions.Logic = "C1 AND C2 AND C3"
'--- Search with GUI
Call oMyQueryForm.Search()
data.Root.Clear
For Each oResult In oMyDataFinder.ResultsList.Elements
MsgBox(oResult.Name)
Call Navigator.LoadData(oResult,"Load")
next