| |
|
|
Matthias Badzun | Moin moin,
je suis Umsteiger de Turbo-/Power-Basic avec bien 10-jährigem "Schaffensloch" et habe tout autor un Problem (V.11 Vollversion)
je dois Variabele aus einer à sich sequenziellen Dossier einlesen, qui mais quelques Zeilen contient dans denen plusieurs Variabele avec Kommata getrennt vorkommen. Anzahl et Typ cette Variabelen ist dans cette Zeilen toujours juste, Cordes et payons gemischt, Cordes sommes zusätzlich dedans ».
Beispiel: -------------------------------------------------------- 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 --------------------------------------------------------
Les cordes peut aussi Sonderzeichen, Punkt et Kommata sowie <LF> et <CR> enthalten, mais aucun » dedans eines Stringtextes. qui Textlängen sommes indéterminé.
avec meinen alten Basic-Varianten était cela ne...aucune Problem (malheureusement mais pas Windows-fähig), mais dans XProfan 11 habe je en supplément encore rien funktionierendes entdeckt. mais là es oui "geht nicht" pas gibt, peux mir bestimmt quelqu'un plus aider.
Vorab vielen Dank Salut, Matthias |
|
|
| |
|
|
|
Christian Eichler | quoi je personnelle, comme quelqu'un qui justement sur C umsteig, dans diesem le cas faire serait ist folgendes:
je serait jeden Buchstaben einzeln comparer et dabei qui " mitzählen. Ist le nombre qui " ungerade ist cela , dedans qui ", ist vous justement handelt es sich réellement um un Trennkomma.
c'est blos ne spontane concept de mir gewesen.
BTW: Überprüfen, si une numéro justement ou non peux on wunderbar avec 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 | sommes chaque Zeilen par <CR> getrennt? Ist naturellement alles machbar, seulement manquer encore un paire Infos. si qui Fichiers pas justement gigantisch gross sommes, serait je vous dans une Bereich magasin et ensuite parsen. |
|
|
| |
|
|
|
Matthias Badzun | qui Fichiers peut 300~400 kB grand son, teoretisch aussi größer mais dans qui Praxis plutôt pas. qui Zeilen sommes par <CR><LF> getrennt. mais inerhalb qui Cordes peut également <CR><LF> comme Zeilenumbruch im Klartext avant venons, qui sich aussi im EDITOR so représenter. qui dürfen ensuite naturellement pas comme Ende qui Datenzeile interpretiert volonté. |
|
|
| |
|
|
|
Dietmar Horn | allô Matthias,
je serait qui Dossier sequentiell einlesen et chacun la ligne dans einer Boucle avec Substr$ durchforsten (avec Komma comme Trennzeichen), jusqu'à rien plus venez (siehe XProfan-Aider trop Substr$).
Les cordes erkennst Du ensuite oui à den Anführungszeichen, qui Du avec Instr überprüfen peux. chez seulement 300 jusqu'à 400 KB devrait cela 1-2-fix aller.
là pourrait ensuite aussi <CR><LF> dedans qui Cordes pas stören.
Salut 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 | oui, venez <CR><LF> dedans de Anführungszeichen avant, befinden vous sich dans im String. Ansonsten trennen vous chaque Zeilen voneinander ab. je serait alles dans une Bereich lesen et zeichenorientiert parsen. |
|
|
| |
|
|
|
| Matthias Badzun
je dois Variabele aus einer à sich sequenziellen Dossier einlesen, qui mais quelques Zeilen contient dans denen plusieurs Variabele avec Kommata getrennt vorkommen. Anzahl et Typ cette Variabelen ist dans cette Zeilen toujours juste, Cordes et payons gemischt, Cordes sommes zusätzlich dedans ». Les cordes peut aussi Sonderzeichen, Punkt et Kommata sowie <LF> et <CR> enthalten, mais aucun » dedans eines Stringtextes. qui Textlängen sommes indéterminé.
Würde je per Array lösen.
Hab "einladen" et "getxy" sur obiges angepasst, dass cela avec den Cordes klappt. KompilierenMarqueSéparation {$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
}
ou KompilierenMarqueSéparationDECLARE 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]=»)
RETOUR 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$,"
")
RETOUR NDATA$[]
endproc
proc MYDATA.GETXY
PARAMETERS X&,Y&
DEC Y&
var S$=SUBSTR$(MYDATA$[Y&],X&,»)
IFNOT MID $(S$,1,1)="q"
RETOUR S$
ENDIF
var N&=VAL(DEL$(S$,1,1))
IFNOT N&
RETOUR »
ENDIF
RETOUR MYDATA.STRINGS$[N&-1]
endproc
proc FGC
PARAMETERS FLE$
var FH&=ASSIGN(FLE$)
IFNOT FH&
RETOUR »
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&,»
RETOUR _OUT$
endproc
|
|
|
| |
|
|
|
Matthias Badzun | Vielen Dank euch allen pour qui verschiedenen idées. Soweit je qui avec meinem encore droite bescheidenen Xprofan-Kenntnissen nachvollziehen konnte hab je vous ausprobiert. là dans den Textfeldern Kommata vorkommen allez substr$ pas - cela mach ensuite là un nouveau champ sur et plus hinten stehende volonté ensuite pas plus gelesen. alors musste je doch qui la ligne zunächst komplett einlesen et ensuite Byte pour Byte auspicken. Irgendwas hakt zwar encore quelquefois beim Wieder-zusammenbau qui Textes dans une neuen String, doit avec dem Feldinhalt trop 1faire avons, mais wenigstens hab je déjà la fois alle mon Felder wieder dans individuel Variabelen.
Frohe Festtage et guten Glissement pour alle
Matthias |
|
|
| |
|
|
|
| dans meinem Posting (2 hoch) stehen deux funktionierende (getestet) Lösungen, magst pas?
(bof, schwer trop übersehen ists oui pas là einziger Code ici im Fil *g*)
sur allemande: qui Code zeigt doch comme funzt et ist zudem très vite. |
|
|
| |
|
|
|
Matthias Badzun | lieben tät je qui déjà, mais là reicht mon profanes Xprofan-savons encore longtemps pas aus um cela trop comprendre. si ensuite dans qui Praxis quoi aneckt hab je aucun chance, qui Ursachen trop entdecken. So entier allmählich stoße je ici sur qui Equivalente zum Altgelernten. mais un paire Progrämmle doit je mir wohl encore rausquälen um wieder fit trop volonté. quand même viele Dank pour cet Scripte, sommes sur qui Platte, mais encore pas im Hirn jusqu'à bientôt, jusqu'à zum prochain Schlauch, sur dem je une Weile ausharre |
|
|
| |
|
|
|
| You sont welcome!
si Fragen entstehen...
mais peut-être pourrait oui un Geübter obigen Code quelque chose humanisieren. |
|
|
| |
|
|