Seite 1 von 2

Datei shared öffnen

Verfasst: 21.11.2007 17:02
von HJA
Hallo,

folgende Frage:

Kann man mit Purebasic eine Datei shared öffnen? Soll heissen: Datei wird mehrfach zum lesen und schreiben geöffnet?

Gruss
hja

Verfasst: 21.11.2007 17:18
von bobobo
... eigentlich nich
Einen konkurrierenden Schreibzugriff unterstützt das Betriebssystem
(novell konnte sowas glaubt sich mein müder bräger erinnern zu können)
oder die Anwendung.
Da ein Openfile() eine Meldung bei Misserfolg zurückgibt kannst Du
Dir mit einer Struktur wie folgt in einem Kontext der nur kurz auf Dateien
schreibenderweise zugreifen soll helfen. Für ReadFile schadet solches auch
nicht gerade.

Code: Alles auswählen

q=0
While Openfile(0,"d:\fredlfesl.cfg")=0 
  Delay(1000)
  q+1
  If q>20
    Messagerequester("och","ich gebs auf",0)
  Endif
Wend
Debug "na endlich darf ich auch mal"


Verfasst: 21.11.2007 17:30
von HJA
Hallo,

danke für die Antwort.

Diese Lösung hatte ich als Notlösung auch schon angedacht. Wird aber letztendlich nicht viel bringen, da der Zustand "Ich darf noch nicht.." sehr oft vorkommen kann und das Schreiben keinesfalls am Ende ganz verhindert werden darf.

Anwendungsfall: Grosse Artikeldatei, 1 User ändert alle Artikel. 2 User jeweils nur 1 Satz. Nun könnte man zwar bei JEDEM Zugriff die Datei neu öffnen, was aber bei vielen Artikeln nicht sinnvoll ist. Also z.B. bei 10 Tausend Artikeln auch 10 Tausend mal öffnen, schliessen. Wobei dabei nat. die 2 User eine Lücke erwischen werden.

Naiverweise hab ich mir das bei Purebasic nicht votrher angesehen, da ich gwohnt war Dateien shared öffnen zu können.

Gruss
hja

Verfasst: 21.11.2007 18:22
von Scarabol
Das du Dateien shared öffnen kann war dann aber eine Sonderfunktion der jeweiligen Programmiersprache...., weil wie gesagt mit Win unmöglich...

Könnte man das Problem nicht mit einer Datenbank lösen?

Gruß
Scarabol

Verfasst: 21.11.2007 18:52
von milan1612
Scarabol hat geschrieben:Das du Dateien shared öffnen kann war dann aber eine Sonderfunktion der jeweiligen Programmiersprache...., weil wie gesagt mit Win unmöglich...
Stimmt nicht, ich hab erst neulich bei CodeProject.com einen Artikel
gelesen der genau das behandelte.
Ist aber relativ kompliziert -> Wer suchet der findet...

Verfasst: 21.11.2007 19:00
von HJA
Hallo,

das kann ich so nicht bestätigen. Ich arbeite schon seit ewigen Zeiten mit Shared Dateien. Zumindest bisher hab ich noch nie einen Compiler gehabt, der das nicht unterstütze. Und der kann das ja auch nur, wenn das Betriebssystemd das unterstüzt. Zu diesem Zweck musste man bis WIN95 auch das Programm share.exe ausführen, welches ab Win98 überflüssig wurde.
Könnte man das Problem nicht mit einer Datenbank lösen?
Könnte ich, aber genau das will ich eigentlich nicht. Ich will eine Anwendung erstellen, die NICHTS zusätzliches benötigt. Keine ODBC-Sachen, keine fremde Datenbank, keine zusätzlichen DLLs usw. Also bau ich die Datenbank mit ein.

Angesehen habe ich mir jedoch trotzdem mal einige andere Lösungen.

Die Bordmittel von Purebasic unterstützen kein Satzpositionieren in der Datenbank, ausser "hinlaufen"

SQLITE sperrt gleich die gesamte DB

SQL-Server ist zu aufwendig u. letztendlich kompliziert für einen Durchschnitts-Anwender.


Gruss
hja

Verfasst: 21.11.2007 19:06
von bobobo
Letztlich wirst du um ne Art Versionierungssystem nicht drumrumkommen.

ne Datenbank kann da auch nur soweit helfen als wie die Daten da
stückweise und bearbeitbar vorliegen.

hmmm ..


oder sowas???

die zu bearbeitenden Teile aus der zu bearbeitenden Datei rausziehen und dabei den Platz merken (von Anfang bis Ende mit einer Marke des Bearbeiters markieren), den Teil extern bearbeiten und nach der Bearbeitung beginnend an der Markierung ins Original einfügen und
letztlich den vorher markierten Bereich rausnehmen.

Während der Bearbeitung dürfen andere natürlich auf diesen markierten
Bereich nicht zugreifen. Sollte die Anwendung steuern.

Bei nicht allzu riesigen Dateien sollte das performant machbar
sein.

Verfasst: 21.11.2007 19:55
von 7x7
HJA, was soll daran so schlimm sein, die Datei 10000x zu öffnen/schliessen ?
Meinst du, daß es der Festplatte dabei übel wird? :wink:

Verfasst: 21.11.2007 20:25
von bobobo
HJA hat geschrieben: ...
SQLITE sperrt gleich die gesamte DB
..
SQLITe lockt nur wenn geschrieben wird. Wenn geschrieben wurde
ist das Lock auch wieder weg. Der Schreibvorgang selber ist dabei
recht kurzfristig. Mit ein wenig Auswertung der jeweiligen SQLite-
rückmeldungen und entsprechender Reaktion bekommt man ein
MultiuserSQLIte hin ..
hab das auch schonmal gemacht und es hat letztlich funktioniert
und es funktioniert immer noch.

Verfasst: 21.11.2007 20:51
von mk-soft
Es gibt so viele freie Datenbanken. Wozu das ganze noch mal entwickeln.
Windows liefert Access gleich mit und MySQL oder SQL-Sever Express kann man sich runter laden.

Dann noch sich mit SQL einarbeiten und los legen.