Deutsch
Forum

Idee: Eine kleine CSV-Datenbank

 

Michael
Gregor
Hallo,

ich kann hier mal Hilfe gebrauchen...

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

Zudem sollte es möglich sein, verschiedene Datenbanken innerhalb eines Programmes
aufzurufen. Auch wäre es nützlich, wenn man zu bestimmten Einträgen bei Bedarf
Bilder mit anzeigen lassen kann (am besten wäre aber eine Methode, die alle für
die DB benötigten Bilder in eine einzige Datei packt und die DB diese dann auch
verwenden kann).

CSV deshalb, weil dieses Format meine (nicht all zu großen) 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 Units zum Download bereitsteht.

Diese hat unter Anderem zwei Befehle: freadline & fwriteline.

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

fwriteline(a(string),b(longint),c(string)) überschreibt in Datei 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
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
Hallo,

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 Units zum Download angeboten.

Einfach links-oben auf Units 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 Units 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 Datei immer im Speicher bilden und später als Ganzes speichern. Reserviere genügend Speicher und bastle deine Datei (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 für 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 für eure Hilfe!
 
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 für 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.

Gruß
 
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 für 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  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

12.666 Betrachtungen

Unbenanntvor 0 min.
H.Brill12.07.2023
Uwe Lang04.04.2023
Walter24.02.2022
Christof Neuß15.07.2021
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


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