LabVIEWForum.de - Scan String funktioniert nicht wie es soll

LabVIEWForum.de

Normale Version: Scan String funktioniert nicht wie es soll
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,
ich habe eine textdatei mit unten stehendem aufbau. daraus möchte ich einen 2D array haben mit den werten des aktuellen cellblocks, dstartx, dstarty,....
allerdings bekomme ich nicht mal hin auch nur einen wert einzulesen.
Ich nutze die Funktion Scan From String. Und dann als Format String beispielsweise die string constante "dStartX = %s 'cfg"
Doch ich bekomme immer nur die Fehlermeldung das der Suchstring nicht gefunden wurde.

Wenn ich nun aus der Textdatei alles außer dem Suchstring lösche funktionierts - dann bekomme ich zB die 12.000000 zurück. Hat jemand eine Idee woran das liegt oder wie ich das auch ohne der Scan Funktion lösen könnte.

<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>
' This is an automatically built program file
program continue
G_atyDesignFileCellBlocks[1]->dStartX = 12.000000 'cfg:/G_atyDesignFileCellBlocks/G_atyDesignFileCellBlocks/StartPointX
G_atyDesignFileCellBlocks[1]->dStartY = 0.000000 'cfg:/G_atyDesignFileCellBlocks/G_atyDesignFileCellBlocks/StartPointY
G_atyDesignFileCellBlocks[1]->dEndX = 12.000000 'cfg:/G_atyDesignFileCellBlocks/G_atyDesignFileCellBlocks/EndPointX
G_atyDesignFileCellBlocks[1]->dEndY = 2600.000000 'cfg:/G_atyDesignFileCellBlocks/G_atyDesignFileCellBlocks/EndPointY
G_atyDesignFileCellBlocks[1]->lCount = 1 'cfg:/G_atyDesignFileCellBlocks/G_atyDesignFileCellBlocks/Count

G_atyDesignFileCellBlocks[2]->dStartX = 19.000000 'cfg:/G_atyDesignFileCellBlocks/G_atyDesignFileCellBlocks/StartPointX
G_atyDesignFileCellBlocks[2]->dStartY = 0.000000 'cfg:/G_atyDesignFileCellBlocks/G_atyDesignFileCellBlocks/StartPointY
G_atyDesignFileCellBlocks[2]->dEndX = 19.000000 'cfg:/G_atyDesignFileCellBlocks/G_atyDesignFileCellBlocks/EndPointX
G_atyDesignFileCellBlocks[2]->dEndY = 2600.000000 'cfg:/G_atyDesignFileCellBlocks/G_atyDesignFileCellBlocks/EndPointY
G_atyDesignFileCellBlocks[2]->lCount = 107 'cfg:/G_atyDesignFileCellBlocks/G_atyDesignFileCellBlocks/Count

....
</div>
Probiere mal "dStartX = %f 'cfg"
' schrieb:Probiere mal "dStartX = %f 'cfg"
funktioniert nicht, ich hab schon alle varianten durch. außerdem brauch ich das als string - sollte für mein verständnis eigentlich trotzdem funktionieren.
Reicht das für den Anfang?
' schrieb:Reicht das für den Anfang?

danke, das sieht gut aus. gleich nochmal nen paar fragen dazu: was ist das für eine umgebung, wo du die strings reingeschrieben hast - die kenne ich noch nicht (bin halt noch LabVIEW anfänger :/ )

wie bekomme ich diese string umgebung gefüllt, wenn ich die zeilen aus einer normalen textdatei holen will?

danke nochmal
' schrieb:danke, das sieht gut aus. gleich nochmal nen paar fragen dazu: was ist das für eine umgebung, wo du die strings reingeschrieben hast - die kenne ich noch nicht (bin halt noch LabVIEW anfänger :/ )

wie bekomme ich diese string umgebung gefüllt, wenn ich die zeilen aus einer normalen textdatei holen will?

danke nochmal

Das ist ein Array of Strings. Ist aber nicht nötig um Dein File in ein Array of Strings zu konvertieren. Mit einer While Loop, einem Shift Register und der Verwendung des Offsets der Scan From String Funktion geht es auch.

Lv85_img[attachment=16060]

Rolf Kalbermatter
bei mir macht dein bsp aber eine endlosschleife, es kommen nicht mal fehler. der hat in der schleife bei mir immer 42 beim shiftregister. bei string länge irgendwas um die 1100 - das heißt die abbruchbedingung wird nie wahr.

EDIT: ok ich habs rausgefunden worans lag: wenn du als 3. variable nur %f angibst nimmt er ab der ersten Zeile die 12 der punkt ist die 42. stelle - er geht dann nicht mehr weiter, weil die Nullen nicht in seine suchmaske passen. ich hab jetzt anstatt %f auch hier %s eingesetzt.

also danke soweit, mal schauen ob ich jetzt alleine weiter komme
' schrieb:bei mir macht dein bsp aber eine endlosschleife, es kommen nicht mal fehler. der hat in der schleife bei mir immer 42 beim shiftregister. bei string länge irgendwas um die 1100 - das heißt die abbruchbedingung wird nie wahr.
Dein PC ist so eingestellt, dass der Dezimaltrenner auf Komma steht anstelle auf Punkt. Must du vor %f ein %.; einfügen.
' schrieb:bei mir macht dein bsp aber eine endlosschleife, es kommen nicht mal fehler. der hat in der schleife bei mir immer 42 beim shiftregister. bei string länge irgendwas um die 1100 - das heißt die abbruchbedingung wird nie wahr.

EDIT: ok ich habs rausgefunden worans lag: wenn du als 3. variable nur %f angibst nimmt er ab der ersten Zeile die 12 der punkt ist die 42. stelle - er geht dann nicht mehr weiter, weil die Nullen nicht in seine suchmaske passen. ich hab jetzt anstatt %f auch hier %s eingesetzt.

also danke soweit, mal schauen ob ich jetzt alleine weiter komme

Sorry Big Grin

Aber ich arbeite nicht mit Dezimalkommas sondern Dezimalpunkten, lol. Normalerweise achte ich auf solche Dinge beim Entwickeln einer Applikation aber beim Quick and Dirty Vorbild erstellen fällt das schon mal unter den Teppich. IchSelbst hat Dir schon die bestmögliche Lösung für dieses Problem gegeben.

Mache Dich mal mit der Beschreibung der Formatspecifiers bekannt. Das ist eine superkräftige Funktion in LabVIEW wenn auch etwas kryptisch am Anfang. Halt typisch C Programmierung weil von da kommt dieses Prinzip auch.

Rolf Kalbermatter
Hier mal noch ein ein Beispiel ohne die Verwendung von Formatstrings:
[attachment=16065]
Lv85_img[attachment=16066]
Seiten: 1 2
Referenz-URLs