| |
|
|
- page 1 - |
|
Uwe Lang | j'ai dans meinen Programme avec qui Listview.dll un Listview erstellt. eh bien voudrais Je l' le contenu comme CSV Dossier Sauver zusammen avec dem En-tête qui Tabelle. comment muss Je l' Speicherbereich de HeaderToCSV (lvhed#) dans WriteFileQuick einbauen avec cela qui En-tête et qui Tabelleninhalt zusammen dans un Dossier gespeichert wird? nuit etlichen erfolglosen versuchen sais je pas plus.
Proc CSV_Speichern
Déclarer tx$,xs&,lvber#,hd&,lvhed#
Faible lvhed#,1848'Anzahl Spalten * 264
tx$ = datname$
xs&=GetNeededMemory(lv&,1)
Faible lvber#, xs&
hd&=HeaderToCsv(lv&,lvhed#,59,1)
xs&=ListviewToCsv(lv&,lvber#,59,1)
WriteFileQuick(addr(tx$),lvber#,0,(hd& + xs&))
Dispose lvber#
Dispose lvhed#
ENDPROC
|
|
|
| |
|
|
|
« cette Beitrag wurde comme Solution gekennzeichnet. » |
|
- page 1 - |
|
H.Brill | comment je vois, la hâte du oui aussi XProfan X3. il peut durchaus un Listview, cela avec qui Listview.dll erstellt worden ist, avec XProfans eigenen Funktionen Travailler. c'est avec cela aussi pas absolument vorgeschrieben, den le contenu des Listview dans une Speicherbereich trop schieben, um cette ensuite avec WritFileQuick() trop Sauver. dans den folgenden Procs verwende je qui wunderbaren neuen Move-Funktionen :
Proc Lade
Déclarer Int bytes1, bytes2
Déclarer String En-tête
ClearList 0
Move("FileToList", fichier)
En-tête = GetString$(0, 0)' ici la hâte du qui Headerzeile
DeleteString(0, 0)
' qui Headerzeile simple dans En-tête Sauver et dans qui
' Listboxliste effacer. maintenant peux du avec dem En-tête
' faire, quoi du vorhast ou bien veux.
ClearList grid
Move("ListToHandle", grid)
ENDPROC
Proc Speichere
Déclarer Memory bereich1
Faible bereich1, 256
Déclarer Int bytes1, bytes2, anzahlColumns
Déclarer String En-tête
anzahlColumns = GetColumns(grid)
WhileLoop 0, anzahlColumns - 1
Claire bereich1
GetColumnName(grid, bereich1, &LOOP)
Si &LOOP < (anzahlColumns - 1)
En-tête = En-tête + String$(bereich1, 0) + »
D'autre
En-tête = En-tête + String$(bereich1, 0)
EndIf
Endwhile
ClearList 0
AddStrings(0, En-tête)
Move("HandleToList", grid)
Move("ListToFile", fichier)
Messagebox(fichier + " gespeichert", "Info", 0)
Dispose bereich1
ENDPROC
cela Handle grid est un avec qui Listview.dll erstelltes Listview. cela klappt chez mir wunderbar. comment on voit, laisser sich qui Vorteile qui Listview.dll (editierbare Felder, PrintListview usw.) avec den neuen Vorteilen de XProfan X3 prima kombinieren. cela allez aussi anders rum, alors une avec XProfan erstellte Gridbox et den Funktionen qui Listview.dll.
PS : si là maintenant un Komma ou bien un | entre den Entrées steht, pourrait égal son. si es toi stört, peux du vous oui austauschen. je hoffe, je konnte dir quelque chose aider. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 20.09.2015 ▲ |
|
|
|
|
|
| |
|
- page 1 - |
|
| comment je cela vois écrit writefilequick 1 grenier dans 1 Dossier.
Reserviere Dir 1 grenier aussi grand comment lvhed# et lvber# zusammen.
Kopiere lvhed# et lvber# dans den neuen grenier.
writefilequick neuen grenier.
Code ungetestet ici simple reingepinselt seulement zum Verständnis. |
|
|
| |
|
|
|
Uwe Lang | merci pour qui schnelle Antwort, cela J'ai eu dans ähnlicher forme aussi déjà. avec dem selben Ergebnis, qui En-tête wird geschrieben et après wird qui le contenu qui banque de données total déménagé. cela sieht so aus comme si qui Taille des Speicherbereichs des Headers größer ist comme berechnet b.z.w vorgegeben. je muss sur cela Problem encore einmal dans Ruhe sur). |
|
|
| |
|
|
|
H.Brill | lvhead# ist oui aussi pas grand genug. Am besten ist es, le nombre qui tatsächlichen Spalten trop ermitteln. Aussi sommes qui Kommas (Anzahl spalten - 1) en supplément trop le calcul. si comme Flag chez HeaderToCSv() encore qui Anführungszeichen en supplément venons (Flag = 0) dois du aussi encore pro Spalte deux " mitrechnen. Aussi ist encore cela Nullbyte am Ende des Cordes im Bereich en supplément trop zählen.
oui c'est ca cet Anzahl bringt dir ensuite HeaderToCsv(). là on den Bereich spalten * 264 + qui zus. Kommas usw.prendre doit (avec GetColumns(H) bekommt on oui le nombre Spalten des Grid heraus), wäre es am besten, une separaten Bereich avec dem Ergebnis de HeaderToCsv() trop dimmen et soviele Bytes vom alten Bereich dans den Neuen trop kopieren.
je denke la fois, c'est cela Sicherste. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 15.09.2015 ▲ |
|
|
|
|
Uwe Lang | je viens seulement maintenant en supplément trop répondre, so comment je cela Problem lösen voulais habe je es pas hinbekommen. j'ai cela Ganze seulement einmal comme Notlösung so gemacht, le moi dans cela Listview une le vide la ligne à Position 0 einfüge et après qui Spaltenköpfe auslese et den Text dans qui entsprechenden Felder eintrage. Pour dem Sauver entferne je qui la ligne wieder aus dem Listview. cela kurze Geruckel fällt pas sur, là je avant dem Sauver encore données aus einem anderen Listview hineinkopiere. quand même merci pour qui Hinweise. si je wieder quelque chose plus Zeit habe, werde je mir cela Problem encore einmal anschauen. |
|
|
| |
|
|
|
H.Brill | comment je vois, la hâte du oui aussi XProfan X3. il peut durchaus un Listview, cela avec qui Listview.dll erstellt worden ist, avec XProfans eigenen Funktionen Travailler. c'est avec cela aussi pas absolument vorgeschrieben, den le contenu des Listview dans une Speicherbereich trop schieben, um cette ensuite avec WritFileQuick() trop Sauver. dans den folgenden Procs verwende je qui wunderbaren neuen Move-Funktionen :
Proc Lade
Déclarer Int bytes1, bytes2
Déclarer String En-tête
ClearList 0
Move("FileToList", fichier)
En-tête = GetString$(0, 0)' ici la hâte du qui Headerzeile
DeleteString(0, 0)
' qui Headerzeile simple dans En-tête Sauver et dans qui
' Listboxliste effacer. maintenant peux du avec dem En-tête
' faire, quoi du vorhast ou bien veux.
ClearList grid
Move("ListToHandle", grid)
ENDPROC
Proc Speichere
Déclarer Memory bereich1
Faible bereich1, 256
Déclarer Int bytes1, bytes2, anzahlColumns
Déclarer String En-tête
anzahlColumns = GetColumns(grid)
WhileLoop 0, anzahlColumns - 1
Claire bereich1
GetColumnName(grid, bereich1, &LOOP)
Si &LOOP < (anzahlColumns - 1)
En-tête = En-tête + String$(bereich1, 0) + »
D'autre
En-tête = En-tête + String$(bereich1, 0)
EndIf
Endwhile
ClearList 0
AddStrings(0, En-tête)
Move("HandleToList", grid)
Move("ListToFile", fichier)
Messagebox(fichier + " gespeichert", "Info", 0)
Dispose bereich1
ENDPROC
cela Handle grid est un avec qui Listview.dll erstelltes Listview. cela klappt chez mir wunderbar. comment on voit, laisser sich qui Vorteile qui Listview.dll (editierbare Felder, PrintListview usw.) avec den neuen Vorteilen de XProfan X3 prima kombinieren. cela allez aussi anders rum, alors une avec XProfan erstellte Gridbox et den Funktionen qui Listview.dll.
PS : si là maintenant un Komma ou bien un | entre den Entrées steht, pourrait égal son. si es toi stört, peux du vous oui austauschen. je hoffe, je konnte dir quelque chose aider. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 20.09.2015 ▲ |
|
|
|
|
H.Brill | ici encore un Abfallprodukt, um besser Stringadressen dans une Bereich trop schaufeln, wobei vorteilhaft ist, qui es aussi avec Variablen allez. Ist jedenfalls einfacher, comme einzeln avec den Bereichsbefehlen trop hantieren. SItem() qui Listview.dll verlangt oui quelque chose comme :
SUBPROC Move.StringAdrToMem
Paramètres String s, String d, Memory B
' s = qui zusammengesetzte String
' d = qui Trenner
' B = qui Bereich
Déclarer Long anzahl
Déclarer String TArray[]
ClearList 0
Claire B, TArray[]
anzahl = Move("StrToList", s, d)
anzahl = Move("ListToArr", TArray[])
Var Int z = 0
WhileLoop 0, anzahl - 1
Long B, z = Addr(TArray[&LOOP])
Inc z, 4
Endwhile
Retour anzahl
ENDPROC
Déclarer Memory bereich
Faible bereich, 12' pour 3 Stringadressen
Claire bereich
Move("StringAdrToMem", "Maier,Hamburg,4711", », bereich)
SItem(grid, bereich, 3)
Claire bereich
eintrag = "Müller,Berlin,4714"
Move("StringAdrToMem", eintrag, », bereich)
SItem(grid, bereich, 3)
peut-être peux es oui quelqu'un brauchen. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 21.09.2015 ▲ |
|
|
|
|
| Bestimmt, mais ici dans diesem Thema serait il es oui pas trouver.
Besser ici chez den Quelltexten posten: [...] |
|
|
| |
|
|
|
H.Brill | là la hâte du droite. quoique je pas sais, pourquoi obiges funktioniert. Hatte avant einiger Zeit cela ausprobiert et était erstaunt. normalement devrait doch pour qui Proc bzw. SubProc cela TArray[] wieder freigegeben worden son bzw. pas plus existieren. cela TArray[] ist oui bistrot défini. Somit devrait aussi qui Stringadressen dans diesem pas plus existieren. quand même peux on vous außerhalb nutzen.
je pourrait mir au maximum penser, qui cet Arrays quand même global sommes.
ou bien hat sonst encore quelqu'un une Erklärung pour ? |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 21.09.2015 ▲ |
|
|
|
|
| il y a là naturellement plusieurs Mgl.
Auszuschließen ist vlt, dass chez:
proc so declare lala[] cela lala de Roland global comme __int__proc_so_lala[] verarbeitet wird car sonst serait z.B. Rekursion pas marcher. Funktioniert vous?
je schätze plutôt, dass ici Windows tut quoi es toujours tut: Speicherhandle freigeben mais Speicherinhalt dabei pas antasten et simple überschreiben si la fois wieder nécessaire.
ou bien Roland hat simple nochmal un eigenes Management drübergelegt. |
|
|
| |
|
|
|
H.Brill | je crois, avec deiner Vermutung avec Windows la hâte du droite. Hab la fois quelque chose gespielt :
Déclarer Long t[]
Cls
TesteArray()
Imprimer
Imprimer t[0], String$(t[0], 0)
Imprimer t[1], String$(t[1], 0)
Imprimer "Addresse : "; t[0]; " le contenu : "; String$(t[0], 0)
Imprimer "Addresse : "; t[1]; " le contenu : "; String$(t[1], 0)
Imprimer t[0], String$(t[0], 0)
Imprimer t[1], String$(t[1], 0)
WaitKey
Fin
Proc TesteArray
Déclarer String lokalarray[]
lokalarray[0] = "Hallo"
lokalarray[1] = "Welt"
WhileLoop 0, 1
Imprimer lokalarray[&LOOP]
t[&LOOP] = Addr(lokalarray[&LOOP])
Endwhile
Claire lokalarray[]
ENDPROC
alors, sortir de peux on sich puis pas. cela sieht on, si nochmals Cordes ("blabla") avec ins Spiel venons. Deswegen ist attention geboten, si entre Proc-Aufruf et Weiterverabeitung encore quoi d'autre gemacht wird. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 22.09.2015 ▲ |
|
|
|
| |
|
- page 2 - |
|
|
Uwe Lang | Pour längerer Abwesenheit viens je seulement maintenant wieder en supplément, mich dem Problem encore einmal trop widmen. j'ai maintenant qui dessus beschriebene variante gewählt et alles avec den XProfan Bordmitteln gelöst.
mon Dank à alle, qui mir avec den Anregungen geholfen avons. |
|
|
| |
|
|
|
| [OFFTOPIC]optimal den entsprechenden Beitrag comme Solution markieren.[/OFFTOPIC] |
|
|
| |
|
|