Español
Foro

Listview con Encabezamiento speichern

 
- Página 1 -



Uwe
Lang
Yo habe en media Programa con el Listview.dll una Listview erstellt. Nun möchte Yo, el Inhalt como CSV Expediente speichern zusammen con el Encabezamiento el Tabla. Como muss Yo, el Speicherbereich de HeaderToCSV (lvhed#) en WriteFileQuick einbauen así el Encabezamiento y Tabelleninhalt zusammen en un Expediente gespeichert se?
Nacht etlichen erfolglosen versuchen weiß Yo no más.
Proc CSV_Speichern

    Declarar tx$,xs&,lvber#,hd&,lvhed#
    Dim lvhed#,1848'Anzahl Spalten * 264
    tx$ = datname$
    xs&=GetNeededMemory(lv&,1)
    Dim lvber#, xs&
    hd&=HeaderToCsv(lv&,lvhed#,59,1)
    xs&=ListviewToCsv(lv&,lvber#,59,1)
    WriteFileQuick(addr(tx$),lvber#,0,(hd& + xs&))
    Disponer lvber#
    Disponer lvhed#

ENDPROC

 
XProfan X2
Gruß,
Uwe Lang

(Windows 10, XProfan X3) 
14.09.2015  
 



« Dieser Contribución wurde como Solución gekennzeichnet. »


H.Brill
Como Yo sehe, hast du en efecto XProfan X3.
Se puede durchaus una Listview, el con el
Listview.dll erstellt worden es, con XProfans
eigenen Características bearbeiten. Es así
auch no necesariamente vorgeschrieben, el
Inhalt des Listview en una Speicherbereich a
schieben, en esta entonces con WritFileQuick()
a speichern.
In el folgenden Procs verwende Yo el wunderbaren
neuen Move-Características :
Proc Lade

    Declarar Int bytes1, bytes2
    Declarar String Encabezamiento
    ClearList 0
    Move("FileToList", datei)
    Encabezamiento = GetString$(0, 0)' Hier hast du el Headerzeile
    DeleteString(0, 0)
    ' el Headerzeile simplemente en Encabezamiento speichern y el
    ' Listboxliste löschen. Jetzt kannst du con el Encabezamiento
    ' hacer, qué du vorhast oder willst.
    ClearList grid
    Move("ListToHandle", grid)

ENDPROC

Proc Speichere

    Declarar Memory bereich1
    Dim bereich1, 256
    Declarar Int bytes1, bytes2, anzahlColumns
    Declarar String Encabezamiento
    anzahlColumns = GetColumns(grid)

    WhileLoop 0, anzahlColumns - 1

        Claro bereich1
        GetColumnName(grid, bereich1, &LOOP)

        If &LOOP < (anzahlColumns - 1)

            Encabezamiento = Encabezamiento + String$(bereich1, 0) + ","

        Más

            Encabezamiento = Encabezamiento + String$(bereich1, 0)

        EndIf

    EndWhile

    ClearList 0
    AddStrings(0, Encabezamiento)
    Move("HandleToList", grid)
    Move("ListToFile", datei)
    Messagebox(datei + " gespeichert", "Info", 0)
    Disponer bereich1

ENDPROC


Das Handle grid es una con el Listview.dll erstelltes
Listview. Das klappt en me wunderbar.
Como uno sieht, dejar el Vorteile el Listview.dll
(editierbare Felder, PrintListview usw.) con el neuen
Vorteilen de XProfan X3 prima kombinieren. Es
auch anders rum, also una con XProfan erstellte Gridbox
y el Características el Listview.dll.

PS : Ob como ahora una Komma oder una | zwischen el
Einträgen es, dürfte egal ser. Wenn lo dich stört,
kannst du ellos sí austauschen.
Yo hoffe, Yo podría dir algo helfen.
 
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  
 



Como Yo el sehe schreibt writefilequick 1 Speicher en 1 Expediente.

Reserviere Usted 1 Speicher así groß como lvhed# y lvber# zusammen.

Kopiere lvhed# y lvber# en el neuen Speicher.

writefilequick neuen Speicher.
DEF @copymem(3) !"kernel32","RtlMoveMemory"
declarar mem#
dim mem#,sizeof(lvhed#)+sizeof(lvber#)
copymem(addr(mem#),addr(lvhed#),sizeof(lvhed#))
copymem(addr(mem#)+sizeof(lvhed#),addr(lvber#),sizeof(lvber#))
... writefilequick ... mem#

Code ungetestet hier simplemente reingepinselt sólo para Verständnis.
 
14.09.2015  
 




Uwe
Lang
Gracias para la respuesta rápida,
había Yo en ähnlicher Form auch ya. Mit el selben Ergebnis, el Encabezamiento se geschrieben y danach se el Inhalt el Datenbank total movido. Das sieht así de como si el Größe des Speicherbereichs des Headers größer es como berechnet b.z.w vorgegeben.
Yo muss encima el problema todavía una vez en Ruhe nachdenken.
 
XProfan X2
Gruß,
Uwe Lang

(Windows 10, XProfan X3) 
14.09.2015  
 




H.Brill
lvhead# es sí auch no groß genug.
Am besten es, el número el tatsächlichen
Spalten a ermitteln. Außerdem son el Kommas
(Anzahl spalten - 1) dazu a rechnen. Wenn como
Flag en HeaderToCSv() todavía el Anführungszeichen
dazu kommen (Flag = 0) mußt du auch todavía pro
Spalte zwei " mitrechnen. Außerdem es todavía el
Nullbyte al Ende des Cuerdas en dazu a
zählen.

Exactamente esta Anzahl bringt dir entonces HeaderToCsv().
Como uno el Zona spalten * 264 + el zus. Kommas
usw.nehmen muß (Mit GetColumns(H) bekommt uno
sí el número Spalten des Grid heraus), wäre lo al
besten, una separaten Zona con el Ergebnis
de HeaderToCsv() a dimmen y soviele
Bytes vom alten Zona en el Neuen a kopieren.

Yo denke veces, el es el 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
Yo komme sólo ahora dazu a antworten,
como Yo el problema lösen quería Yo no hinbekommen. Yo habe el Ganze sólo una vez como Notlösung así gemacht, el Yo en el Listview una vacío Línea a Position 0 einfüge y danach el Spaltenköpfe auslese y el Texto en el entsprechenden Felder eintrage. Nach el Guardar entferne Yo el Línea otra vez de el Listview. Das kurze Geruckel fällt no en, como Yo antes el Guardar todavía Daten de una otro Listview hineinkopiere.
Trotzdem danke para el Hinweise.
Wenn Yo otra vez algo mehr Tiempo habe, voluntad Yo el problema todavía una vez anschauen.
 
XProfan X2
Gruß,
Uwe Lang

(Windows 10, XProfan X3) 
20.09.2015  
 




H.Brill
Como Yo sehe, hast du en efecto XProfan X3.
Se puede durchaus una Listview, el con el
Listview.dll erstellt worden es, con XProfans
eigenen Características bearbeiten. Es así
auch no necesariamente vorgeschrieben, el
Inhalt des Listview en una Speicherbereich a
schieben, en esta entonces con WritFileQuick()
a speichern.
In el folgenden Procs verwende Yo el wunderbaren
neuen Move-Características :
Proc Lade

    Declarar Int bytes1, bytes2
    Declarar String Encabezamiento
    ClearList 0
    Move("FileToList", datei)
    Encabezamiento = GetString$(0, 0)' Hier hast du el Headerzeile
    DeleteString(0, 0)
    ' el Headerzeile simplemente en Encabezamiento speichern y el
    ' Listboxliste löschen. Jetzt kannst du con el Encabezamiento
    ' hacer, qué du vorhast oder willst.
    ClearList grid
    Move("ListToHandle", grid)

ENDPROC

Proc Speichere

    Declarar Memory bereich1
    Dim bereich1, 256
    Declarar Int bytes1, bytes2, anzahlColumns
    Declarar String Encabezamiento
    anzahlColumns = GetColumns(grid)

    WhileLoop 0, anzahlColumns - 1

        Claro bereich1
        GetColumnName(grid, bereich1, &LOOP)

        If &LOOP < (anzahlColumns - 1)

            Encabezamiento = Encabezamiento + String$(bereich1, 0) + ","

        Más

            Encabezamiento = Encabezamiento + String$(bereich1, 0)

        EndIf

    EndWhile

    ClearList 0
    AddStrings(0, Encabezamiento)
    Move("HandleToList", grid)
    Move("ListToFile", datei)
    Messagebox(datei + " gespeichert", "Info", 0)
    Disponer bereich1

ENDPROC


Das Handle grid es una con el Listview.dll erstelltes
Listview. Das klappt en me wunderbar.
Como uno sieht, dejar el Vorteile el Listview.dll
(editierbare Felder, PrintListview usw.) con el neuen
Vorteilen de XProfan X3 prima kombinieren. Es
auch anders rum, also una con XProfan erstellte Gridbox
y el Características el Listview.dll.

PS : Ob como ahora una Komma oder una | zwischen el
Einträgen es, dürfte egal ser. Wenn lo dich stört,
kannst du ellos sí austauschen.
Yo hoffe, Yo podría dir algo helfen.
 
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
Hier todavía una Abfallprodukt, en mejor Stringadressen
en una Zona a schaufeln, wobei vorteilhaft es, daß
lo auch con Variables va. Ist jedenfalls einfacher, como
einzeln con el Bereichsbefehlen a hantieren.
SItem() el Listview.dll verlangt sí algo como :
SUBPROC Move.StringAdrToMem

    Parámetros String s, String d, Memory B
    ' s = el zusammengesetzte String
    ' d = el Trenner
    ' B = el Zona
    Declarar Largo anzahl
    Declarar String TArray[]
    ClearList 0
    Claro B, TArray[]
    anzahl = Move("StrToList", s, d)
    anzahl = Move("ListToArr", TArray[])
    Var Int z = 0

    WhileLoop 0, anzahl - 1

        Largo B, z = Addr(TArray[&LOOP])
        Inc z, 4

    EndWhile

    Volver anzahl

ENDPROC

Declarar Memory bereich
Dim bereich, 12' para 3 Stringadressen
Claro bereich
Move("StringAdrToMem", "Maier,Hamburg,4711", ",", bereich)
SItem(grid, bereich, 3)
Claro bereich
eintrag = "Müller,Berlin,4714"
Move("StringAdrToMem", eintrag, ",", bereich)
SItem(grid, bereich, 3)

Tal vez kann lo sí alguien 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, aber aquí en diesem Thema sería él lo sí no encontrar.

Besser hier en el Quelltexten puesto:  [...] 
 
21.09.2015  
 




H.Brill
Como hast du Recht.
Obwohl Yo no weiß, por qué obiges funktioniert.
Hatte antes einiger Tiempo el ausprobiert y war erstaunt.
Normalerweise müßte doch después de el Proc o. SubProc
el TArray[] otra vez freigegeben worden ser o. no
mehr existieren. Das TArray[] es sí lokal definiert.
Somit debería auch el Stringadressen en diesem no
mehr existieren. Trotzdem puede ser ellos außerhalb nutzen.

Yo podría me höchstens denken, daß esta Arrays
trotzdem global son.

Oder ha sonst todavía alguien una Erklärung dafür ?
 
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  
 



Lo son como natürlich mehrere Mgl.

Auszuschließen es vlt, dass en:

proc así
declarar lala[]
el lala de Roland global como __int__proc_so_lala[] verarbeitet
se porque sonst sería z.B. Rekursion no trabajo.
Funktioniert ellos?

Yo schätze más, dass hier Windows tut qué lo siempre tut:
Speicherhandle liberación aber Speicherinhalt esta no antasten
y simplemente überschreiben si veces otra vez benötigt.

Oder Roland ha simplemente otra vez una propio Management drübergelegt.
 
22.09.2015  
 




H.Brill
Yo glaube, con deiner Vermutung con Windows
hast du bastante. Hab veces algo gespielt :
Declarar Largo t[]
Cls
TesteArray()
Imprimir
Imprimir t[0], String$(t[0], 0)
Imprimir t[1], String$(t[1], 0)
Imprimir "Addresse : "; t[0]; " Inhalt : "; String$(t[0], 0)
Imprimir "Addresse : "; t[1]; " Inhalt : "; String$(t[1], 0)
Imprimir t[0], String$(t[0], 0)
Imprimir t[1], String$(t[1], 0)
WaitKey
End

Proc TesteArray

    Declarar String lokalarray[]
    lokalarray[0] = "Hallo"
    lokalarray[1] = "Welt"

    WhileLoop 0, 1

        Imprimir lokalarray[&LOOP]
        t[&LOOP] = Addr(lokalarray[&LOOP])

    EndWhile

    Claro lokalarray[]

ENDPROC


Also, verlassen puede ser se darauf no. Das
sieht uno, si nochmals Cuerdas ("blabla") con en el
Spiel kommen. Deswegen es Vorsicht geboten,
si zwischen Proc-Aufruf y Weiterverabeitung
todavía qué más gemacht se.
 
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  
 




Uwe
Lang
Nach längerer Abwesenheit komme Yo sólo otra vez dazu, mich el Problema todavía una vez a widmen.
Yo habe ahora el oben beschriebene Variante gewählt y alles con el XProfan Bordmitteln gelöst.

Mein Dank a todos, el me con el Sugerencias geholfen haben.
 
XProfan X3
Gruß,
Uwe Lang

(Windows 10, XProfan X3) 
22.10.2015  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

12.463 Views

Untitledvor 0 min.
Sven Bader13.02.2023
Uwe Lang13.04.2020
p.specht21.10.2019
RudiB.08.08.2019
Más...

Themeninformationen

Dieses Thema ha 3 subscriber:

H.Brill (5x)
iF (4x)
Uwe Lang (4x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie