AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Datei gemeinsam nutzen
Thema durchsuchen
Ansicht
Themen-Optionen

Datei gemeinsam nutzen

Ein Thema von wbdelpprax · begonnen am 29. Mai 2010 · letzter Beitrag vom 7. Jun 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von wbdelpprax
wbdelpprax

Registriert seit: 11. Mär 2008
36 Beiträge
 
#1

Datei gemeinsam nutzen

  Alt 29. Mai 2010, 03:46
Hallo Leute,
durch googeln, suchen hier und in anderen Foren weiß ich zwar, dass schon viel ähnliches zu meinem Problem geschrieben wurde, aber leider habe ich meine Frage noch nirgends beantwortet gesehen. Daher hier mal mein Anliegen:

Ich habe ein Bildbetrachtungsprogramm geschrieben, wo man u.a. Schlüsselworte zu den Bildern vergeben kann. Diese werden in einer XML-Datei abgelegt, die auf einem Stick gespeichert ist.

Startet nun jemand das Programm auf einem anderen Rechner in meinem kleinen Heimnetz, kann er diesen Stick benutzen und hat die Informationen parat.

Anders sieht die Sache aus, wenn das Programm schon gestartet ist und ein 2. user auch damit arbeiten will.

Dazu habe ich mir nun folgende - zugegebener Weise - simple Lösung einfallen lassen:

Wird das Programm gestartet und der Stick erkannt und auch, das die XML-Datei auf dem Stick ist, dann kopiert das Programm die XML erst mal in den Ordner 'Gemeinsame Dateien'. Da auf diesen ja von allen anderen Nutzern im Netzwerk zugegriffen werden kann, stehen die Informationen damit allen zur Verfügung.

Kleine Anmerkung: Arbeitet ein user mit dem Programm können alle anderen user, die danach das Programm starten, die XML nur noch lesen und somit z. B. per Stichwort nach Bildern suchen. Aber es können aus Konsistenzgründen kein weiteren Stichworte vergeben, angelegt oder gelöscht werden.

Soviel zur Vorgeschichte!

Mein Problem ist nun, dass ich nicht weiß, wie ich den Ordner "Gemeinsame Dateien" unter Delphi ansprechen soll.

Die Funktion "SHGetSpecialFolderLocation" aus der unit "ShlObj" ist mir bekannt und auch die verwendeten CSIDL kenne ich. Aber leider ist keine dabei für den Ordner "Gemeinsame Dateien". Oder ich bin zu blind die zu finden

Ich arbeite mit Windows XP Prof., SP2 und Turbo Delphi 2006

Gruß Andreas
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Datei gemeinsam nutzen

  Alt 29. Mai 2010, 08:19
Was hat die Datei denn in den gemeinsamen Dateien zu suchen?!? Solche Dateien gehören in die Anwendungsdaten...

Denn die gemeinsamen Dateien sind für das Ablegen gemeinsam genutzter DLLs usw. bei einem Installationsprozess gedacht. Nicht aber für veränderbare Dateien, denn dafür hat man in dem Ordner (wenn der PC ordentlich eingerichtet ist) auch keinen Zugriff.

In den Anwendungsdaten werden Dateien abgelegt, die das Programm selbst speichert und auch wieder ändern möchte, eben die Daten der Anwendung. Also AppData.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

Re: Datei gemeinsam nutzen

  Alt 29. Mai 2010, 08:57
Wenn die Datei auch so schon von überall nutzbar ist und es nur Probleme gibt, wenn das Programm doppelt läuft, dann liegt das bestimmt nicht am Ort, wo sich diese Datei befindet.

Du solltest dich also besser mal an die Routinen wenden, welche auf diese Datei zugreifen.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von wbdelpprax
wbdelpprax

Registriert seit: 11. Mär 2008
36 Beiträge
 
#4

Re: Datei gemeinsam nutzen

  Alt 30. Mai 2010, 10:31
Hallo Leute
erst mal vielen Dank für die schnellen Antworten. Ich glaube, ich habe mich ein wenig unklar ausgedrückt und daher nun der Versuch eindeutiger zu werden und auch mein Anliegen nochmals klarer zu formulieren.

1.
Den Ordner, den ich meinte, der heißt bei mir auf einem Englischem System 'Shared Documents' und wurde ohne mein Zutun (also von wegen nicht sauber eingerichtet ...) bei der Erstellung eines kleinen Heimnetzwerkes sofort für den 2. PC im Netz sichtbar und man konnte auch auf die darin befindlichen Daten zugreifen. Den möchte ich fürs erste nutzen und dort die XML-Datei für einen 2. Nutzer ablegen.

Wenn ich den Ordner 'AppData' verwende, so ist dieser nicht per se freigegeben und der 2. PC im Netz kann da nicht drauf zugreifen. Ich möchte es aber vermeiden einen Ordner auf einem 2. PC durch das Programm auf dem 1. PC freizugeben - auch wenn ich weiß, dass das machbar ist. Ich möchte eine Ressource nutzen, auf die jeder weitere Nutzer in der Workgroup meines Heimnetzwerkes Zugriff hat und zwar ohne das da erst Systemtechnisch etwas freigeschaltet werden muss oder so. Das muss auch nicht der Ordner 'Shared Documets' sein - ich bin für jede funktionierende Anregung dankbar und aufgeschlossen.

2.
Ich habe nicht vor, das Programm zum jetzigem Zeitpunkt irgendwie kommerziell zu nutzen, sondern nur hier in meinem kleinem, privatem Heimnetzwerk. Daher interessieren mich im Moment keine Fragestellungen wie und wo man "offizieller" Weise Daten bereit stellen sollte - sorry
Da kann man sicher auch drüber diskutieren und im "Normalfall" würde ich Sebastian auch völlig recht geben. Allerdings wüsste ich dann immer noch nicht, wie ich einem 2. PC die Daten zur Verfügung stellen sollte, denn AppData liegt in der Regel ja auf C:\ und ist in der Regel - und das ist ja auch sinnvoll so - nicht einfach so für alle anderen user eines Netzes zugänglich und freigegeben. Bei mir jedenfalls nicht.

3.
Zitat:
Wenn die Datei auch so schon von überall nutzbar ist und es nur Probleme gibt, wenn das Programm doppelt läuft, dann liegt das bestimmt nicht am Ort, wo sich diese Datei befindet.
Sorry, himitsu, aber da hast Du wohl was falsch verstanden. Ich habe geschrieben, dass die Daten auf einem Stick in einer XML-Datei gespeichert sind. Aber diesen Stick kann natürlich nur einer zur Zeit nutzen - und genau deswegen möchte ich die XML-Datei nach dem Programmstart auch für andere Nutzer zugänglich machen.

Natürlich könnten die auch auf den Stick, der am 1. PC steckt zugreifen und die Datei öffnen. Aber hast Du schon mal probiert einen Stick eindeutig per Programm zu identifizieren? Also mir ist das bisher noch nicht gelungen und ich habe auch die verzweifelten Diskussionen in diversen Foren darüber verfolgt. Daher die Idee mit dem 'Shared Documents'.

Also hier noch mal ganz einfach mein Anliegen. Alles was ich wissen möchte ist:
Weiß irgend jemand, wie ich per Programm den Ordner 'Shared Documents' ansprechen kann um dort eine Datei hinzu kopieren und diese Datei von einem anderem PC von dort einlesen kann ? Eine CSIDL_SHARED_DOCUMENTS, mit der ich dann z. B die Funktion 'SHGetSpecialFolderLocation' aufrufen könnte, habe ich jedenfalls nicht gefunden.

Bis denn
Andreas!
  Mit Zitat antworten Zitat
fatalerror
(Gast)

n/a Beiträge
 
#5

Re: Datei gemeinsam nutzen

  Alt 30. Mai 2010, 10:55
msdn

FOLDERID_PublicDocuments: CSIDL_COMMON_DOCUMENTS
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Datei gemeinsam nutzen

  Alt 30. Mai 2010, 11:07
Entschuldige, ich hatte gedacht du meinst wirklich die gemeinsamen Dateien, die z.B. unter c:\programme liegen, und nicht die gemeinsamen Dokumente...

Die gemeinsamen Dokumente sind unter Windows XP direkt freigegeben, wenn man das so eingestellt hat, nicht standardmäßig. Ab Vista finden diese sich unter \\pc\public\documents. Dafür gibt es die Konstante:
Delphi-Quellcode:
const
  CSIDL_COMMON_DOCUMENTS = $2E;
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#7

Re: Datei gemeinsam nutzen

  Alt 30. Mai 2010, 11:47
Moin zusammen,

man kann dem Stick einen festen Laufwerksbuchstaben in der Datenträgerverwaltung zuordnen,
dannit ist auch das identifizieren etwas leichter. Im Prinzip sehe ich da gerade folgende Möglichkeiten:

1. Wenn du die xml-Datei nur lesend öffnest, dann können auch mehrere Nutzer gleichzeitig zugreifen.

2. Du machst eine Datenbankanwednung (sowas wie SQLite), wo die XML-Datei in ein Memo gelesen wird und
greifst mit den Clients auf die DB zu.

Grüße // Martin
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Datei gemeinsam nutzen

  Alt 30. Mai 2010, 12:09
Wobei mir immer noch nicht klar ist was es bringt die Datei auf jedem PC in den Ordner mit den gemeinsamen Dokumenten zu kopieren. Denn wie sollte denn das Programm auf einem anderen PC darauf kommen, dass es auf diesem PC nach der Datei suchen soll? Sollen alle PCs durchsucht werden ob die Datei dort gerade in den gemeinsamen Dokumenten liegt?

Denn wenn du die Datei einfach überall in die gemeinsamen Dokumente kopierst, dann hast du z.B. auf 3 PCs diese dort jeweils freigegeben. Und dann?
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Datei gemeinsam nutzen

  Alt 30. Mai 2010, 12:18
Imho gehören Daten für de Multi-userzugriff auf einen Server.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von wbdelpprax
wbdelpprax

Registriert seit: 11. Mär 2008
36 Beiträge
 
#10

Re: Datei gemeinsam nutzen

  Alt 31. Mai 2010, 12:45
Danke schon mal für all die tollen Anregungen. Habe leider gerade wenig Zeit und melde mich in 2 Tagen nochmal - hoffe, dann ist noch jemand interessiert!
Gruß Andreas !
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz