Datei shared öffnen

Anfängerfragen zum Programmieren mit PureBasic.
HJA
Beiträge: 18
Registriert: 21.11.2007 16:58
Wohnort: Wuppertal

Datei shared öffnen

Beitrag 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
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag 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"

‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
HJA
Beiträge: 18
Registriert: 21.11.2007 16:58
Wohnort: Wuppertal

Beitrag 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
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag 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
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Benutzeravatar
milan1612
Beiträge: 810
Registriert: 15.04.2007 17:58

Beitrag 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...
Bin nur noch sehr selten hier, bitte nur noch per PN kontaktieren
HJA
Beiträge: 18
Registriert: 21.11.2007 16:58
Wohnort: Wuppertal

Beitrag 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
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag 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.
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
7x7
Beiträge: 591
Registriert: 14.08.2007 15:41
Computerausstattung: ganz toll
Wohnort: Lelbach

Beitrag 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:
- alles was ich hier im Forum sage/schreibe ist lediglich meine Meinung und keine Tatsachenbehauptung
- unkommentierter Quellcode = unqualifizierter Müll
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag 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.
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag 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.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten