Hi,
ich hab mal wieder eine Frage bzw. ich brauche Hilfe. Ich möchte Strings, die in einem bestimmten Feld einer Tabelle liegen bei Auswahl durch asTokens mit dem Separator ";" trennen und als Liste ausgeben lassen.
Das Feld und der Inhalt wird auch richtig gefunden, wenn ich jedoch AsTokens anwende, dann gibt der mir weder eine Ergebnisliste bzw. eine Liste als String raus noch gibt er NIL zurück..
Hier der Quellcode:
thema = av.getproject.finddoc("tabell2.dbf")
myVTab = thema.GetVTab
Feld = myVTab.FindField("dani")
derstring = myVTab.ReturnValueString(Feld, myVTab.GetSelection.GetNextSet(-1))
msgbox.info(derstring,"derstring")
if (derstring = NIL) then
msgbox.info("NÖ","nö")
else
ausgabe = derstring.asTokens(";")
msgbox.list(derstring.astokens(";"),"test","test")
end
newfile = Filename.Make("C:\IDdatatokens.txt")
newfileexists=File.Exists(newfile)
if (newfileexists = false) then
lf = LineFile.Make(newfile, #FILE_PERM_WRITE )
lf.WriteElt(ausgabe.asString)
lf.Close
else
lf = LineFile.Make(newfile,#FILE_PERM_MODIFY)
lf.gotoend
lf.WriteElt(ausgabe.asString)
lf.close
end
Vielleicht kann mir jemand von Euch sagen, wo hier mein Fehler liegt. Das Skript beachtet meinen Separator überhaupt nicht und gibt mir auch nichts zurück....
Danke schonmal,
dani
ich hab mal wieder eine Frage bzw. ich brauche Hilfe. Ich möchte Strings, die in einem bestimmten Feld einer Tabelle liegen bei Auswahl durch asTokens mit dem Separator ";" trennen und als Liste ausgeben lassen.
Das Feld und der Inhalt wird auch richtig gefunden, wenn ich jedoch AsTokens anwende, dann gibt der mir weder eine Ergebnisliste bzw. eine Liste als String raus noch gibt er NIL zurück..
Hier der Quellcode:
thema = av.getproject.finddoc("tabell2.dbf")
myVTab = thema.GetVTab
Feld = myVTab.FindField("dani")
derstring = myVTab.ReturnValueString(Feld, myVTab.GetSelection.GetNextSet(-1))
msgbox.info(derstring,"derstring")
if (derstring = NIL) then
msgbox.info("NÖ","nö")
else
ausgabe = derstring.asTokens(";")
msgbox.list(derstring.astokens(";"),"test","test")
end
newfile = Filename.Make("C:\IDdatatokens.txt")
newfileexists=File.Exists(newfile)
if (newfileexists = false) then
lf = LineFile.Make(newfile, #FILE_PERM_WRITE )
lf.WriteElt(ausgabe.asString)
lf.Close
else
lf = LineFile.Make(newfile,#FILE_PERM_MODIFY)
lf.gotoend
lf.WriteElt(ausgabe.asString)
lf.close
end
Vielleicht kann mir jemand von Euch sagen, wo hier mein Fehler liegt. Das Skript beachtet meinen Separator überhaupt nicht und gibt mir auch nichts zurück....
Danke schonmal,
dani
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von Maxilla am Do., 11.09.2003 - 09:25
Permalinkin dem Teil
ausgabe = derstring.asTokens(";")
msgbox.list(derstring.astokens(";"),"test","test")
end
muss es heißen
ausgabe = derstring.asTokens(";")
msgbox.listAsString(derstring.astokens(";"),"test","test")
end
Zumindest siehst du dann was "asTokens" gemacht hat. Den Rest des Skrites hab ich mir aber noch net angeschaut.
Gruß von Maxilla
Gespeichert von Dani am Do., 11.09.2003 - 10:04
Permalinkmerkt sich arcview diese Liste jetzt als Liste? weil ich möchte die Liste Eintrag für Eintrag durchgehen und überprüfen ob bestimmte Wörter oder Buchstabenfolgen in den jeweiligen Einträgen vorhanden sind...z.B. "h="..versuche das jetzt mit pattern, bin schon gespannt ob es funzt ;)
Gespeichert von Jürgen Evert am Do., 11.09.2003 - 11:01
PermalinkGespeichert von Maxilla am Do., 11.09.2003 - 11:10
PermalinkDu kannst übrigens auch einfacher überprüfen, ob bestimmte Wörter oder Buchstabenfolgen vorhanden sind und zwar mit der Abfrage "contains".
Würde ungefähr so aussehen:
selBitmap = theVTab.getSelection
for each rec in theSet
if (theStrings.contains(theFindString))then
selBitMap.set(rec)
end
end[i][/i]
Gespeichert von Maxilla am Do., 11.09.2003 - 11:12
PermalinkGespeichert von Dani am Do., 11.09.2003 - 11:16
Permalinkmein Problem ist folgendes: ich habe in einer Spalte lauter Felder mit Strings, wobei die einzelnen Einträge im String durch ";" voneinander getrennt sind. Im String sind Attribute von Objekten, zum Beispiel Brückenhöhe, Brückenlast, Raststätte (1 oder 0) usw.
Wähle ich also einen Datensatz aus, muss ich automatisch abfragen, ob bestimmte Inhalte in diesem String drin sind (also ob es ein h= für brückenhöhe oder l= für brückenlast) und dann diese Angaben zusammen mit den IDs in eine extra Datei schreiben. Das mit den IDs und den Koordinaten hab ich alles schon gemacht, jetzt muss ich nur noch diese Strings auseinanderpfriemeln. In der Datei steht dann zum Beispiel:
123456 ; 895623 ; Point: 7.65356 45.4689 ; Point: 8.9456 55.123 ; h=3.5 ; l = 15
Kann ich diese Höhenangaben auch mit contains rausfinden?
Wir hatten eben die Idee den String erst mit asTokens auseinanderzunehmen und dann die Liste durchgehen zu lassen und alles, was gefunden wird, an die Datei anzuhängen..
Gespeichert von Jürgen Evert am Fr., 12.09.2003 - 12:43
PermalinkWenn nicht, AsTokens-Liste erstellen und die Einzelwerte mit contains("h=") prüfen und den Zahlenwert mit
Variable.(right(variable.count-3))
z.B. in ein neues Feld "Höhe" eintragen lassen. So hast du dann auch für das weitere Arbeiten mit der Tabelle Vorarbeit geleistet.
Gespeichert von Jürgen Evert am Fr., 12.09.2003 - 12:48
PermalinkVariable.right(Variable.count-2)
Aber das kommt dabei raus, wenn man sowas beim Mittagessen macht.