| |
|
|
Matthias Badzun | Moin moin,
Yo bin Umsteiger de Turbo-/Power-Basic con bien 10-jährigem "Schaffensloch" y habe por lo tanto una Problema (V.11 Vollversion)
Yo muß Variabele de uno a se sequenziellen Expediente einlesen, el aber algunos Zeilen enthält en denen mehrere Variabele con Kommata getrennt vorkommen. Anzahl y Typ dieser Variabelen es en esta Zeilen siempre igual, Cuerdas y Pagar gemischt, Cuerdas son zusätzlich innerhalb "".
Ejemplo: -------------------------------------------------------- 15840 1 13,13,6,20,11,12,15 550 595 600 385 390 1,81074,36626,"Herr",36526,"Unbekannt","Diagnose","€","Schlusstext, 2. Zeile" 3 --------------------------------------------------------
Las cuerdas puede auch Sonderzeichen, Punkt y Kommata sowie <LF> y <CR> enthalten, pero no "" innerhalb uno Stringtextes. El Textlängen son unbestimmt.
Mit media alten Basic-Varianten war el kein Problema (desafortunadamente pero no Windows-fähig), aber en XProfan 11 Yo dazu todavía nichts funktionierendes entdeckt. Aber como lo sí "geht nicht" no son, kann me determinado alguien más helfen.
Vorab vielen Dank Saludo, Matthias |
|
|
| |
|
|
|
Christian Eichler | Was Yo persönlich, como alguien el gerade en C umsteig, en diesem Fall hacer sería es folgendes:
Yo sería cada Buchstaben einzeln vergleichen y esta el " mitzählen. Ist el número el " ungerade es el , innerhalb el ", es ellos gerade es lo tatsächlich en una Trennkomma.
Es blos ne spontane Concepto de me gewesen.
BTW: Überprüfen, si una Zahl gerade o no puede ser wunderbar con Modulo 2
Grüße Christian |
|
|
| Debian Lenny, Intel Celeron 2,8 Ghz, 768 MB Ram && Win XP Pro, Intel C2D 1,66Ghz, 2 GB Ram ... PROFAN² 6.6 | 08.12.2008 ▲ |
|
|
|
|
Frank Abbing | Sind cada Zeilen por <CR> getrennt? Ist natürlich alles machbar, sólo fehlen todavía unos pocos Infos. Wenn el Archivos no gerade gigantisch gross son, sería Yo ellos en una Zona invitar y luego parsen. |
|
|
| |
|
|
|
Matthias Badzun | El Archivos puede 300~400 kB groß ser, teoretisch auch größer aber en el Praxis más no. El Zeilen son por <CR><LF> getrennt. Aber inerhalb el Cuerdas puede ebenfalls <CR><LF> como Zeilenumbruch en el Klartext antes kommen, que auch en el EDITOR así darstellen. El dürfen entonces natürlich no como Ende el Datenzeile interpretiert voluntad. |
|
|
| |
|
|
|
Dietmar Horn | ¡Hola Matthias,
Yo sería el Expediente sequentiell einlesen y jede Línea en uno Bucle con Substr$ durchforsten (con Komma como Trennzeichen), a nichts mehr kommt (siehe XProfan-Ayuda a Substr$).
Las cuerdas erkennst Usted entonces sí a el Anführungszeichen, el Usted con Instr überprüfen kannst. En sólo 300 a 400 KB müßte el 1-2-fix ir.
Como dürfte entonces auch <CR><LF> innerhalb el Cuerdas no stören.
Saludo Dietmar |
|
|
| Multimedia für Jugendliche und junge Erwachsene - MMJ Hoyerswerda e.V. [...] Windows 95 bis Windows 7 Profan² 6.6 bis XProfan X2 mit XPSE Das große XProfan-Lehrbuch: [...] | 08.12.2008 ▲ |
|
|
|
|
Frank Abbing | Sí, kommt <CR><LF> innerhalb de Anführungszeichen antes, befinden ellos se en en el String. Ansonsten trennen ellos cada Zeilen voneinander de. Yo sería alles en una Zona lesen y zeichenorientiert parsen. |
|
|
| |
|
|
|
| Matthias Badzun
Yo muß Variabele de uno a se sequenziellen Expediente einlesen, el aber algunos Zeilen enthält en denen mehrere Variabele con Kommata getrennt vorkommen. Anzahl y Typ dieser Variabelen es en esta Zeilen siempre igual, Cuerdas y Pagar gemischt, Cuerdas son zusätzlich innerhalb "". Las cuerdas puede auch Sonderzeichen, Punkt y Kommata sowie <LF> y <CR> enthalten, pero no "" innerhalb uno Stringtextes. El Textlängen son unbestimmt.
Würde Yo por Array lösen.
Hab "einladen" y "getxy" en obiges adaptado, dass el con el Cuerdas klappt. KompilierenMarcaSeparación {$cleq}
//globale
strings myData.strings,
myData=myData.loadFromString(fgc("meineDatei"))
//fenster
cls
//testen
print "Zeilen:",sizeOf(myData)
print "1,1:",myData.getxy(1,1)
print "3,3:",myData.getxy(3,3)
print "1,5:",myData.getxy(1,5)
print "3,9:",myData.getxy(3,9)
print "4,9:",myData.getxy(4,9)
print "6,9:",myData.getxy(6,9)
waitInput
end
myData.loadFromString(string data){
clear myData.strings
strings lns=explode(data,"q")
long c=sizeOf(lns)
case (c==0) : case (lns[0]=="") : return lns
data=""
whileLoop 0,c-1 {
ifnot (loop mod 2) {
data=data+lns[loop]
} else {
myData.strings[sizeOf(myData.strings)]=lns[loop]
data=data+"q"+str$(int(sizeOf(myData.strings)))+"q"
}
}
strings nData=explode(data,"
")
return nData
}
myData.getxy(long x,y){
y-
string s=substr$(myData$[y],x,",")
casenot mid$(s,1,1)=="q" : return s
long n=val(del$(s,1,1))
casenot n : return ""
return myData.strings[n-1]
}
fgc(string fle){
long fh=assign(fle)
casenot fh : return ""
reset #fh
string s,_out
whileNot eof(fh) {
input #fh,s
_out=_out+s
casenot eof(fh) : _out=_out+"
"
}
close fh
assign fh,""
return _out
}
o KompilierenMarcaSeparaciónDECLARE MYDATA.STRINGS$[]
DECLARE MYDATA$[]
MYDATA$[]=MYDATA.LOADFROMSTRING(FGC("meineDatei"))
CLS
PRINT "Zeilen:",SIZEOF(MYDATA$[])
PRINT "1,1:",MYDATA.GETXY(1,1)
PRINT "3,3:",MYDATA.GETXY(3,3)
PRINT "1,5:",MYDATA.GETXY(1,5)
PRINT "3,9:",MYDATA.GETXY(3,9)
PRINT "4,9:",MYDATA.GETXY(4,9)
PRINT "6,9:",MYDATA.GETXY(6,9)
WAITINPUT
end
proc MYDATA.LOADFROMSTRING
PARAMETERS DATA$
DECLARE LNS$[]
CLEAR MYDATA.STRINGS$[]
LNS$[]=EXPLODE(DATA$,"q")
var C&=SIZEOF(LNS$[])
IF (C&=0)
IF (LNS$[0]="")
RETORNO LNS$[]
ENDIF
ENDIF
DATA$=""
WHILELOOP 0,C&-1
IFNOT (&LOOP MOD 2)
DATA$=DATA$+LNS$[&LOOP]
ELSE
MYDATA.STRINGS$[SIZEOF(MYDATA.STRINGS$[])]=LNS$[&LOOP]
DATA$=DATA$+"q"+STR$(INT(SIZEOF(MYDATA.STRINGS$[])))+"q"
ENDIF
ENDWHILE
DECLARE NDATA$[]
NDATA$[]=EXPLODE(DATA$,"
")
RETORNO NDATA$[]
ENDPROC
proc MYDATA.GETXY
PARAMETERS X&,Y&
DEC Y&
var S$=SUBSTR$(MYDATA$[Y&],X&,",")
IFNOT MID$(S$,1,1)="q"
RETORNO S$
ENDIF
var N&=VAL(DEL$(S$,1,1))
IFNOT N&
RETORNO ""
ENDIF
RETORNO MYDATA.STRINGS$[N&-1]
ENDPROC
proc FGC
PARAMETERS FLE$
var FH&=ASSIGN(FLE$)
IFNOT FH&
RETORNO ""
ENDIF
RESET #FH&
var S$=""
var _OUT$=""
WHILENOT EOF(FH&)
INPUT #FH&,S$
_OUT$=_OUT$+S$
IFNOT EOF(FH&)
_OUT$=_OUT$+"
"
ENDIF
ENDWHILE
CLOSE FH&
ASSIGN FH&,""
RETORNO _OUT$
ENDPROC
|
|
|
| |
|
|
|
Matthias Badzun | Vielen Dank euch allen para el verschiedenen Ideen. Soweit Yo el con mi todavía bastante bescheidenen Xprofan-Kenntnissen nachvollziehen podría tener Yo ellos ausprobiert. Como en el Textfeldern Kommata vorkommen va substr$ no - el mach entonces hay una neues Feld en y más hinten stehende voluntad entonces no mehr gelesen. Also musste Todavía el Línea primero komplett einlesen y luego Byte para Byte auspicken. Irgendwas hakt zwar todavía manchmal beim Wieder-zusammenbau el Textos en una neuen String, muß con el Feldinhalt a tun haben, aber wenigstens tener Yo ya veces todos mi Felder otra vez en individual Variabelen.
Frohe Festtage y guten Resbalón para todos
Matthias |
|
|
| |
|
|
|
| In mi Posting (2 hoch) posición zwei funktionierende (getestet) Lösungen, magst no?
(naja, schwer a übersehen ists sí no como einziger Code hier en el Hilo *g*)
Auf Alemán: Der Code zeigt doch como funzt y es zudem muy rápidamente. |
|
|
| |
|
|
|
Matthias Badzun | mögen tät Yo el ya, aber como reicht mein profanes Xprofan-Wissen todavía largo no de en el a verstehen. Wenn entonces en el Praxis qué aneckt tener Yo no Chance, el Ursachen a entdecken. So bastante allmählich stoße Yo hier en el Equivalente para Altgelernten. Aber unos pocos Progrämmle muß Yo wohl todavía rausquälen en otra vez fit a voluntad. Trotzdem viele Dank para esta Scripte, son en el Platte, aber todavía no en el Hirn Bis bald, a para nächsten Schlauch, en el Yo una Weile ausharre |
|
|
| |
|
|
|
| You are welcome!
Wenn Fragen entstehen...
Aber tal vez podría sí una Geübter obigen Code algo humanisieren. |
|
|
| |
|
|