AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Allgemeine Pfadangabe unter Delphi

Ein Thema von Ykcim · begonnen am 30. Dez 2006 · letzter Beitrag vom 30. Dez 2006
Antwort Antwort
Seite 1 von 2  1 2      
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
824 Beiträge
 
Delphi 10.4 Sydney
 
#1

Allgemeine Pfadangabe unter Delphi

  Alt 30. Dez 2006, 00:31
Hallo Zusammen,

um es gleich zu zugeben: Ich bin ein Newby und habe gleich zwei Probleme:

Ich habe ein Berechnungsprogramm geschrieben, mit dem man das Volumen einer Schraube berechnen kann. Das ganze erfordert einen ordentlichen Bericht.

Dazu habe ich folgendes Code verwendet, damit ein neues Dokument in Word nach Volage einer Word-Dokumentenvorlage erstellt wird.

Die Datenübergabe ist noch nicht implementiert.

procedure TForm1.BerichtNeuClick(Sender: TObject);
var
Template: OleVariant;
begin
Template:=('D:\Main.dot');
if wordapplication1.Visible=true then
WordDocument1.ConnectTo(WordApplication1.ActiveDoc ument)
else
wordapplication1.Connect;
wordapplication1.Visible:=true;
wordapplication1.Documents.Add(Template,EmptyParam ,EmptyParam,EmptyParam);
end;

Nun zu meinen Problemen:
1. Ich möchte den Dateipfad allgemein gestalten. Das heißt, die Template Datei wird im selben Ordner wie die exe Datei sein, vielleicht in einem Unterordner. Ich habe es in einem anderen Programm mit folgendem Code erreicht: ".\Unterordner\Datei.dat" Das funktioniert aber leider in dem oben beschrieben Code nicht.

2. Wenn die ButtonClick Prozedur das erste Mal ausgeführt, klappt alles wunderbar. Schließe ich Word dann und klicke nocheinmal auf den Button, bricht alles ab mit der Info, Dieser Befehl sei nicht verfügbar, weil keine Dokument geöffnet sei...

Könnt ihr mir helfen? Vielen Dank schon mal.
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Allgemeine Pfadangabe unter Delphi

  Alt 30. Dez 2006, 00:40
Also den Pfad deiner Anwendung holst du dir mit ExtractFilePath(ParamStr(0)).
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
824 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Allgemeine Pfadangabe unter Delphi

  Alt 30. Dez 2006, 01:10
Hallo 3_of_8
erst einmal danke für Deine schnelle Antwort. Aber ich glaube, dass sie nicht zu meinem Problem passt, daher versuche ich es verständlicher zu erklären.

Wenn Das Programm fertig ist, dann soll es weitergegeben werden. Und da ich nicht weiß, wo der Anwender es dann speichert, weiß ich auch nicht den Pfad der Main.dot und kann ihn somit nicht im Programm hinterlegen. Also möchte ich ihn allgemein gestalten, wie zum Beispiel: Die Datei ist im gleichen Verzeichnis wie die Programm exe Datei meines Programms.

So habe ich es in einem anderen Programm gemacht, in dem Zeichnungen angezeigt werden, die in dem gleichen Ordner wie meine exe Datei ist - im Unterordner Images:

Delphi-Quellcode:
procedure TVolumensberechnung.KoerperChange(Sender: TObject);
begin
if Koerper.Items.Strings[Koerper.ItemIndex]='Zylinderthen
Image1.Picture.LoadFromFile('.\images\ZylinderNEU.bmp')
else
.
.
.
Vielen Dank
Patrick
  Mit Zitat antworten Zitat
EDatabaseError

Registriert seit: 11. Mai 2005
Ort: Göppingen
1.238 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Allgemeine Pfadangabe unter Delphi

  Alt 30. Dez 2006, 01:13
Ich verstehe dein Problem immer noch nicht das was 3_of_8 gesagt hat liefert dir doch den Pfad in dem deine Exe liegt was brauchst du denn noch ?!?
Tobias
It's not a bug, it's a feature.
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
824 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Allgemeine Pfadangabe unter Delphi

  Alt 30. Dez 2006, 01:22
Hi,
vielleicht bin ich auch nur zu doof es zu verstehen.

Wenn ich DIr mein Programm geben würde, dann würde ich die Datei Main.dot in dem Progammordner speichern. z.B.: C:\Programme\Test
Die Pfadangabe im Programmcode für die Main.dot wäre also: C:\Programme\Tets\Main.dot
Wenn Du das Programm aber woanders speicherst z.B.: D:\Anwendungen\Test dann funktioniert mein Programm ja nicht mehr, denn die Pfadangabe müsste lauten D:\Anwendungen\Test\Main.dot

Und deshalb kann ich den Dateipfad nicht so angeben.

Habe hier mal den kompletten Code der Procedure kopiert...

Delphi-Quellcode:
procedure TForm1.BerichtNeuClick(Sender: TObject);
var
Template: OleVariant;
begin
Template:=('D:\Privat\Software Entwicklung\Main.dot');
if wordapplication1.Visible=true then
WordDocument1.ConnectTo(WordApplication1.ActiveDocument)
else
wordapplication1.Connect;
wordapplication1.Visible:=true;
wordapplication1.Documents.Add(Template,EmptyParam,EmptyParam,EmptyParam);
end;
Aber an dieser Stelle nochmal: Ich bin ein Newby und vielleicht nur zu doof die Antwort zu verstehen!

Vielen Dank
Patrick
  Mit Zitat antworten Zitat
EDatabaseError

Registriert seit: 11. Mai 2005
Ort: Göppingen
1.238 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Allgemeine Pfadangabe unter Delphi

  Alt 30. Dez 2006, 01:25
ahh...

du müsstest den pfad der Main.dot z.b. in der Registry speichern und eben einmal zuweisen - sobald dein Programm sie nicht mehr findet sagst du dem benutzer das er (via Opendialog) den Pfad der Main.dot angeben soll - dann speicherst du ihn wieder und hast ihn so als variable
Tobias
It's not a bug, it's a feature.
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
824 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Allgemeine Pfadangabe unter Delphi

  Alt 30. Dez 2006, 01:32
Danke für die Antwort! Aber bis ich die verstanden habe, muss ich mich erst mal drei Tage mit dem, was dafür nötig beschäftigen...

Ich hatte gehofft, dass es einfacher ginge, so, wie ich es oben mit den Images gemacht habe. Da hatte ich das gleiche Problem und habe es mit ./ in den Griff bekommen, dass das Programm im eigenen Ordner die Datei sucht...

Gibt es soetwas nicht auch für andere Pfads.

Habe die Procedur meiner vorherigen Antwort noch zugefügt.

Danke
Patrick
  Mit Zitat antworten Zitat
EDatabaseError

Registriert seit: 11. Mai 2005
Ort: Göppingen
1.238 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Allgemeine Pfadangabe unter Delphi

  Alt 30. Dez 2006, 01:33
Zitat von Ykcim:
Danke für die Antwort! Aber bis ich die verstanden habe, muss ich mich erst mal drei Tage mit dem, was dafür nötig beschäftigen...

Ich hatte gehofft, dass es einfacher ginge, so, wie ich es oben mit den Images gemacht habe. Da hatte ich das gleiche Problem und habe es mit ./ in den Griff bekommen, dass das Programm im eigenen Ordner die Datei sucht...

Gibt es soetwas nicht auch für andere Pfads.

Habe die Procedur meiner vorherigen Antwort noch zugefügt.

Danke
schau dich hier ein bisschen im forum um da wirst du alles was nötig ist finden...
Tobias
It's not a bug, it's a feature.
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
824 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Allgemeine Pfadangabe unter Delphi

  Alt 30. Dez 2006, 01:48
Okay, okay, ich habe es geschnallt...

Ich hätte doch mal 5 Minuten länger über die Antwort von 3_of_8 nachdenken sollen.

Hier die Lösung:

Delphi-Quellcode:
procedure TForm1.BerichtNeuClick(Sender: TObject);
var
Template: OleVariant;
Pfad:string;
begin
Pfad:=ExtractFilePath(ParamStr(0));
Template:=(Pfad+'Main.dot');
if wordapplication1.Visible=true then
WordDocument1.ConnectTo(WordApplication1.ActiveDocument)
else
wordapplication1.Connect;
wordapplication1.Visible:=true;
wordapplication1.Documents.Add(Template,EmptyParam,EmptyParam,EmptyParam);
end;
Vielen Dank für die Hilfe.

Ykcim
Patrick
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Allgemeine Pfadangabe unter Delphi

  Alt 30. Dez 2006, 02:14
Moin Ykcim,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Zitat von Ykcim:
dass es einfacher ginge, so, wie ich es oben mit den Images gemacht habe.
mit dem relativen Pfad ('.\images\ZylinderNEU.bmp') hast Du aber einen sehr gefährlichen Weg beschritten, denn dieser wird relativ zum Arbeitsverzeichnis gesehen.
Legt sich jemand einen Link an, und gibt dort ein anderes Arbeitsverzeichnis an, würde die Datei nicht mehr gefunden werden.
In diesem Falle könnte man sagen:
Prima, dann kann man durch ein anderes Arbeitsverzeichnis verschiedenen Sätze von Daten verwenden.

Leider kann sich das Arbeitsverzeichnis aber auch durch die Verwendung von Open-/Savedialogen ändern, was bei der Verwendung von relativen Pfaden zu recht "interessanten" () Ergebnissen führen kann.
Sobald also die Gefahr besteht, dass sich das Arbeitsverzeichnis während des Programmlaufes ändert, sollte man auf relative Pfad verzichten.
(Und da das auch im Nachhinein durch eine Programmänderung geschehen kann, würde ich prinzipiell auf relative Pfade verzichten)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  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 08:04 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