Italia
Foro

Idee: Eine kleine CSV-Datenbank

 

Michael
Gregor
Ciao,

ich kann hier mal Aiuto gebrauchen...

Ich möchte gerne eine kleine Datenbank programmieren, die mit CSV File
auskommt, d.h. diese lesen und auch schreiben kann. Ähnlich wie die listview.dll,
die ich jedoch nicht verwenden möchte.

Zudem sollte es possibile sein, verschiedene Datenbanken innerhalb eines Programmi
aufzurufen. Auch wäre es nützlich, wenn man zu bestimmten Einträgen bei Bedarf
Bilder mit Mostra lassen kann (am besten wäre aber eine Methode, die alle per
die DB benötigten Bilder in un einzige File packt und die DB diese dann auch
verwenden kann).

CSV deshalb, weil dieses Format meine (nicht all zu grande) Ansprüche voll
erfüllt und auch von Dritten erweitert werden kann.

Das soll mein erstes kleines Projekt werden, daher wende ich mich hilfesuchend an
Euch hier. Vielleicht kommt ja was nützliches dabei raus, wenn alle ein wenig
anpacken
 
01.03.2005  
 



Die CSV-Variante hat wie jede andere Variante seine Vor- und Nachteile.

Ich würde vorschlagen wir bauen eine inc, welche ja bei Bedarf auch zu einer PCU kompiliert werden kann.

Also eine CSVDB.INC

Ich würde auch vorschlagen, die include nur unter Verwendung des neuesten offiziellen XProfans herzustellen. Im Moment ist dies wohl XProfan9.

Ich stelle mal in den Raum das wir im Prinzip nur 2 Befehle benötigen.
Ein Befehl zum Lesen,- ein anderer zum Schreiben.

Und da fällt mir auch schon die file.pcu ein - welche unter Unità zum Download bereitsteht.

Diese hat unter Anderem zwei Befehle: freadline & fwriteline.

freadline (a(string),b(longint)) ließt aus File a Zeile b aus und gibt den Inhalt als String zurück.

fwriteline(a(string),b(longint),c(string)) überschreibt in File a die Zeile b mit dem String c.

Nun, da csv bekanntlich mehere Spalten mit einem Separator (in meinem Beispiel ;) getrennt enthalten kann, sollte diese Option unter Verwendung der beiden o.g. Befehle leicht adaptierbar sein.

Also:
KompilierenMarkierenSeparieren
 {$compiler p9}
 {$runtime p9}
 $U file.pcu = csvf

proc csvdb.read

    parameters fle$,x&,y&
    return substr$(csvfreadline(fle$,y&),x&,;)

endproc

proc csvdb.write

    parameters fle$,x&,y&,s$
    case csvfwriteline (fle$,y&,setsubstr(csvfreadline(fle$,y&),x&,s$)) : return 1
    return 0

endproc

proc setsubstr

    parameters f$,p&,t$
    declare s$,c&
    c&=0
    s$=
    casenot mid$(f$,len(f$),1)=; : f$=f$+;

    while len(f$)

        inc c&

        if (c&=p&)

            s$=s$+t$+;

        else

            s$=s$+mid$(f$,1,instr(;,f$))

        endif

        f$=del$(f$,1,instr(;,f$))

        ifnot len(f$)

            case c&<p& : f$=f$+;

        endif

    wend

    return s$

endproc

cls
csvdb.write test.csv,1,1,Name:
csvdb.write test.csv,1,2,Vorname:
csvdb.write test.csv,2,1,Glück
csvdb.write test.csv,2,2,Hans
print csvdb.read(test.csv,1,1) + csvdb.read(test.csv,2,1)
print csvdb.read(test.csv,1,2) + csvdb.read(test.csv,2,2)
waitkey
 href='./../../funzione-riferimenti/xprofan/end/'>end
So, habs getestet und es funzt auch primast.

Da haddu ne mini-csv-db.

Salve, iF
 
01.03.2005  
 



Na Gregor - funzt es? :roll:

Ists nichn kleines Beispiel was Du wolltest?

Kleines Feedgebäck wär schön.

Salve, iF
 
03.03.2005  
 




Michael
Gregor
Ciao,

nein leider nicht...

Hab ja erstens kein profan 9 und zweitens konnte ich die genannte
Unit im Download Bereich nicht finden...
 
03.03.2005  
 



Ich schrieb nicht die Unit sei im Downloadbereich zu finden - sondern die Unit sei unter Unità zum Download angeboten.

Einfach links-oben auf Unità klicken.

Kein XProfan9 :roll:

Leider steht in Deiner Signatur hier nicht welche Profanversion Du nutzt - deshalb schrieb ichs auch in X9.

Schreib mal hier hinein welche Profanversion Du nutzt: [...] 

Sag doch - welches Profan nutzt Du?

Salve, iF
 
03.03.2005  
 




Michael
Gregor
Ich schau gleich mal bei Unità nach. Das letzte mal schaute ich auch dort nach, und dort war es nicht
zu finden. Vielleicht hab ich diesmal mehr Glück

Ich nutze noch immer die Profan 8 Shareware, die du mir mal gegeben hast
 
03.03.2005  
 




Michael
Gregor
Ah wer suchet der findet. Hätte wohl lieber zweimal hinschauen sollen
 
03.03.2005  
 




Frank
Abbing
Hallo Michael,

ich würde die File immer im Speicher bilden und später als Ganzes speichern. Reserviere genügend Speicher und bastle deine File (Anzahl generierter Bytes merken!). Als Spaltentrenner am besten das Semikolon verwenden, die Texte solltest du in Anführungszeichen setzen. Zeilentrenner ist Chr$(13)+Chr$(10).
Um Bilder zu integrieren, benutzt du vielleicht einen Erkennungsstring mit angehängtem Dateinamen und schliesslich dem eigentlichen Text, z.B. <<<</Icons/Guckmal.ico>>>>Hier steht der Text.
Beachte aber, das andere Programme so ein erweitertes CSV-Format nicht richtig lesen können... Und um die Suchstrings zu finden empfiehlt sich die API lstrcmpi() aus der Kernel32.

Warum möchtest du die Listview.dll nicht verwenden? Gerade per sowas hab ich sie gemacht.
 
03.03.2005  
 




Michael
Gregor
Hätte ich etwas größeres und konkreteres, würde ich die listview.dll sicherlich sogar verwenden.

Ich spiele hier aber momentan nur ein wenig mit der Profan Shareware herum, um zu sehen, was ich
so machen kann und ob ich überhaupt etwas damit hinbekomme. Und ich weiß noch nicht, ob ich das alles
nicht evtl. wieder verwerfe und mich anderen Dingen zuwende. Zudem kann die listview.dll viel viel viel
mehr als ich brauche ;) ich wollte einfach vorerst nur mal testen, ob ich auch so, auf einfache Weise,
mit CSVs (oder anderen Datenformaten) hantieren kann. Aber ich danke euch sehr per eure Aiuto!
 
03.03.2005  
 




Michael
Gregor
Hallo Frank,

nachdem ich mir mal die Beispiele mit der listview.dll angesehen habe,
merke ich so langsam, dass ich die wohl doch sehr wohl gut gebrauchen kann ;)

Kann also gut sein, dass du bald mal ein neues Registrierersuchen bekommst ;)

Aber erstmal muss ich überhaupt mal damit anfangen, in Profan durchzusteigen.
Denn noch ist das alles garnicht so einfach per mich. Momentan bin ich noch
dabei, deine Beispiel-Quellcodes durchzustöbern, in der Hoffnung, da bald
durchzusteigen. Als Anfänger ist das alles noch nicht ganz so einfach.

Saluto
 
07.03.2005  
 



Franks Listview.dll ist meisterhaft und eine absolute Empfehlung.

Da die dll mit samt allen Befehlen auch aus so ziemlich jeder Programmiersprache aufrufbar ist kann man sich mit ruhigem Gewissen bei Frank registrieren und weiß einen starken Helfer (listview.dll) an der Seite zu haben.

Salve, iF
 
08.03.2005  
 




Frank
Abbing
Hi,


Aber erstmal muss ich überhaupt mal damit anfangen, in Profan durchzusteigen.
Denn noch ist das alles garnicht so einfach per mich. Momentan bin ich noch
dabei, deine Beispiel-Quellcodes durchzustöbern, in der Hoffnung, da bald
durchzusteigen. Als Anfänger ist das alles noch nicht ganz so einfach.


Lass dir Zeit beim Lernen. Das ist wichtig. Fang mit den Sachen an, die dir am meisten Spass machen und beginne einfach, selber kleine Quellcodes zu erstellen.

iF:
 
08.03.2005  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

12.770 Views

Untitledvor 0 min.
H.Brill12.07.2023
Uwe Lang04.04.2023
Walter24.02.2022
Christof Neuß15.07.2021
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie