AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Das System kann den Pfad nicht finden

Das System kann den Pfad nicht finden

Ein Thema von Delbor · begonnen am 5. Jul 2016 · letzter Beitrag vom 6. Jul 2016
Antwort Antwort
Seite 3 von 4     123 4   
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#21

AW: Das System kann den Pfad nicht finden

  Alt 5. Jul 2016, 14:04
@nahpets

Da der erste Beitrag wohl schon zu lange zurück liegt, hier einmal der Beitrag als Komplett-Quote:

Bitte achte auf die 5. Zeile im ersten Quelltext-Abschnitt. Das stammt nicht von mir, sondern (steht da im Zitat-Block) und kann von jedermann im ersten Beitrag dieses Threads nachgelesen werden.
Hi zusammen
Da dieses Thema nicht mehr ganz so zum Thema dieses Threads passt, mache ich einen neuen auf.
Aktueller Stand der Dinge ist: Ich habe 2 WebactionItems, in denen ich jeweils versuche, einen Hintergrund, bzw. ein Logo zu laden:

Delphi-Quellcode:
procedure TWebModule1.WebModule1WebActBackgroundItem2Action(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
    var fs : tFileStream; sFile, BGdPath : String;
begin
  if Request.PathInfo = '/Images/background/bgblue.jpgthen
  begin
    try
// E:\DelphiXE8 Corner\DelphiXE8VclCorner\DelborWebserverXE8\DelborDataSnapServer\Images\background
      sFile := Format('E:\DelphiXE8 Corner\DelphiXE8VclCorner\DelborWebserverXE8\DelborDataSnapServer\Images\background\%s', [Request.QueryFields.Values['background']]);

      fs := tFileStream.Create(sFile,fmOpenRead);
...
und
Delphi-Quellcode:
procedure TWebModule1.WebModule1WebActLogoitemAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
    var fs : tFileStream; sFile, BGdPath : String;
begin
  try
// E:\DelphiXE8 Corner\DelphiXE8VclCorner\DelborWebserverXE8\DelborDataSnapServer\Images\Logo
    sFile := Format('E:\DelphiXE8 Corner\DelphiXE8VclCorner\DelborWebserverXE8\DelborDataSnapServer\Images\Logo\%s', [Request.QueryFields.Values['Logo']]);

    fs := tFileStream.Create(sFile,fmOpenRead);
Beide Male wird mir eine Exception geworfen - die Fehlermeldung besagt in etwa das, was der Threadtitel aussagt.
In beiden Codeschnipseln steht über der Format-Anweisung jeweils der Pfad, wie er im Explorer in der Adresszele steht - der kann daher eigentlich gar nicht falsch sein.
Soeben versucht habe ich:
sFile := Format('\Images\Logo\%s', [Request.QueryFields.Values['Logo']]); Das hätte eigentlich funktionieren sollen (unterhalb des Html-Ordners liegt noch einOrdner 'Logo' mit dem gesuchten Inhalt). Das Resultat war jedoch dasselbe...
Was läuft da falsch?

Gruss
Delbor
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
876 Beiträge
 
Delphi 10.3 Rio
 
#22

AW: Das System kann den Pfad nicht finden

  Alt 5. Jul 2016, 14:10
Hi zusammen

Wieso fällt mir erst jetzt auf, dass hier immer von einer URL die Rede ist?
Der Inhalt von Request.PathInfo stammt aus dieser HTML-Anweisung im Hauptdokument:
Delphi-Quellcode:
  <div id="Titellogo">&nbsp;,&nbsp; <!--<div id="imglogo">&nbsp;-->
     <!--<div id="img1">&nbsp;<img alt="DelborPunktCH" src="./Images/jpeg150/DSC_5751.jpg"/></div>-->
    <h2>Willkommen auf den Seiten von</h2>
    <img src ="Images/Logo/Delbor_8.jpg" alt="Losggosrc=" /> //Genau genommen hier

  </div>
Also nix mit URL.

So, wie ich das bisher verstanden habe, ist der Wert von Request.Pathinfo beim ersten Eintreffen der Anfrage '/'. Die Antwort ist [DELPHI]Response.Content := PageproducerHome.Content Und der ist erstmal das komplette HTML der Seite.
Anschliessend liest der Browser den HTML-Text, und wenn er auf bestimmte Tags stösst wie <img>, setzt er nochmal einen Request ab, um das Bild zu erhalten.
Und das ganze wiederholt der Browser solange, bis er alle Infos hat, Erst jetzt wrd die Verbindung geschlossen. Soweit richtig?

Also enthält Request.Pathinfo offenbar nie eine URL.
Wenn, dann müsste die URL in Request.URL enthalten sein. Wobei ich mich frage, ob in einer auf localhost laufenden Anwendung überhaupt eine URL ausgegeben wird (die es aber natürlich gibt).

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#23

AW: Das System kann den Pfad nicht finden

  Alt 5. Jul 2016, 14:17
Ok, ich geb hier dann mal auf ...

Als Lektüre sei empfohlen
https://wiki.selfhtml.org/wiki/HTML/...fiken/Grafiken
sowie https://wiki.selfhtml.org/wiki/HTML/...zieren_in_HTML (dieser Link findet sich auch im ersten Link)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#24

AW: Das System kann den Pfad nicht finden

  Alt 5. Jul 2016, 14:40
@nahpets

Da der erste Beitrag wohl schon zu lange zurück liegt, hier einmal der Beitrag als Komplett-Quote:

Bitte achte auf die 5. Zeile im ersten Quelltext-Abschnitt. Das stammt nicht von mir, sondern (steht da im Zitat-Block) und kann von jedermann im ersten Beitrag dieses Threads nachgelesen werden.
Hi zusammen
Da dieses Thema nicht mehr ganz so zum Thema dieses Threads passt, mache ich einen neuen auf.
Aktueller Stand der Dinge ist: Ich habe 2 WebactionItems, in denen ich jeweils versuche, einen Hintergrund, bzw. ein Logo zu laden:

Delphi-Quellcode:
procedure TWebModule1.WebModule1WebActBackgroundItem2Action(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
    var fs : tFileStream; sFile, BGdPath : String;
begin
  if Request.PathInfo = '/Images/background/bgblue.jpgthen
  begin
    try
// E:\DelphiXE8 Corner\DelphiXE8VclCorner\DelborWebserverXE8\DelborDataSnapServer\Images\background
      sFile := Format('E:\DelphiXE8 Corner\DelphiXE8VclCorner\DelborWebserverXE8\DelborDataSnapServer\Images\background\%s', [Request.QueryFields.Values['background']]);

      fs := tFileStream.Create(sFile,fmOpenRead);
...
und
Delphi-Quellcode:
procedure TWebModule1.WebModule1WebActLogoitemAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
    var fs : tFileStream; sFile, BGdPath : String;
begin
  try
// E:\DelphiXE8 Corner\DelphiXE8VclCorner\DelborWebserverXE8\DelborDataSnapServer\Images\Logo
    sFile := Format('E:\DelphiXE8 Corner\DelphiXE8VclCorner\DelborWebserverXE8\DelborDataSnapServer\Images\Logo\%s', [Request.QueryFields.Values['Logo']]);

    fs := tFileStream.Create(sFile,fmOpenRead);
Beide Male wird mir eine Exception geworfen - die Fehlermeldung besagt in etwa das, was der Threadtitel aussagt.
In beiden Codeschnipseln steht über der Format-Anweisung jeweils der Pfad, wie er im Explorer in der Adresszele steht - der kann daher eigentlich gar nicht falsch sein.
Soeben versucht habe ich:
sFile := Format('\Images\Logo\%s', [Request.QueryFields.Values['Logo']]); Das hätte eigentlich funktionieren sollen (unterhalb des Html-Ordners liegt noch einOrdner 'Logo' mit dem gesuchten Inhalt). Das Resultat war jedoch dasselbe...
Was läuft da falsch?

Gruss
Delbor
Sorry, aber die 5. Zeile ist inhaltlich Blödsinn, das ist keine Pathinfo, wie sie in einer Web-Applikation genutzt wird. Da wird ein konkreter Dateiname abgefragt.

Und wenn in 'ner Webseite irgendwo eine IMG-Tag steht, dann baut der Browser daraus eine URL zusammen, mit der er beim Webserver anfragt, ob er den Inhalt bekommen kann.

Wenn in der HTML-Datei irgendwo sowas steht:
Code:
<img alt="DelborPunktCH" src="./Images/jpeg150/DSC_5751.jpg"/>
dann ist das keine Pathinfo, sondern ein relativer Pfad zu einer angeforderten Datei.

Diese Datei sollte dann vom Webserver aus gesehen im Unterverzeichnis Images und dann im darunterliegenden Verzeichnis jpeg150 liegen. Dafür ist die Nutzung der PathInfo irrelevant.

Nehmen wir mal eine Web-Anwendung, die irgendwo in der Welt liegt und die mit einer ISAPI-DlL arbeitet:

Die URL sei:
Code:
http://Servername.de/WebMenu.dll/Images?Image=Background.jpg
Der Webserver erfährt hier also, dass er die DLL WebMenu zu verwenden hat. Die DLL schaut nun, welche PathInfo sie verwenden soll. Dies wäre Images. In der Behandlungsroutine für die PathInfo Images kann nun über Request.QueryFields.Values['Image'] der Wert BackGround.jpg in Erfahrung gebracht werden.

In der von mir geposteten Routine könnte damit dann die Datei BackGround.jpg ausgeliefert werden.

In der HTML-Datei müsste das Tag dann so aussehen:
Code:
<img src="http://Servername.de/WebMenu.dll/Images?Image=Background.jpg">
Übertragen auf eine Web-Applikation wäre das vermutlich dann
Code:
<img src="http://localhost:8080/Images?Image=Background.jpg">
Bei 'ner WebApplikation sollte aber dashier auch gehen:
Code:
<img src="Images?Image=Background.jpg">
Bin mir momentan nicht sicher, ob es eventuell
Code:
<img src="/Images?Image=Background.jpg">
heißen muss.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#25

AW: Das System kann den Pfad nicht finden

  Alt 5. Jul 2016, 14:53
@nahpets

Natürlich würde das so gehen, aber warum nicht einfach beim
Code:
<img src="/Images/background/bgblue.jpg"/>
belassen und dann ganz simpel den Pfad zusammenbauen mit
Delphi-Quellcode:
// Request.PathInfo => /Images/background/bgblue.jpg
sfile := 'E:\DelphiXE8 Corner\DelphiXE8VclCorner\DelborWebserverXE8\DelborDatasnapServer' + Request.PathInfo;
// sfile => E:\DelphiXE8 Corner\DelphiXE8VclCorner\DelborWebserverXE8\DelborDatasnapServer/Images/background/bgblue.jpg
fs := TfileStream.Create( sfile, fsOpenRead );
und der Drops ist gelutscht ...

Zu geradeaus? Zu einfach?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
876 Beiträge
 
Delphi 10.3 Rio
 
#26

AW: Das System kann den Pfad nicht finden

  Alt 5. Jul 2016, 15:43
Hi zusammen

Sir Rufos Vorschlag scheint mir wirklich plausibel. Der einzige "Wermutstropfen" dabei ist, dass es sich dabei um einen hartcodierten vollständigen Pfad handelt. Der würde natürlich nicht mehr funktionieren, wenn die Anwendung später auf meinem gemieteten Webspace laufen soll.
Das Rootverzeichnis meines Webspaces ist "/". Darüber hinaus habe ich keinen Zugriff/ist kein Zugriff erlaubt.
Das heisst: die Anwendng muss auf meinem Webspace zwingend unter diesem Verzeichnis liegen. Und wenn ich das richtig verstehe und interpretiere, müsste die Anwendung zur Entwicklungszeit unterhalb des html-Verzeichnisses liegen, was zur Zeit nicht der Fall ist. Damit könnten sich dann alle Pfade relativ zum HTML-Verzeichnis oder eben "/" beziehen.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#27

AW: Das System kann den Pfad nicht finden

  Alt 5. Jul 2016, 15:53
Das ist natürlich fatal. Es müsste so etwas wie Konfigurations-Datei geben, wo man diese Information ablegen könnte, und dann evtl. noch so etwas wie eine Variable, wo man den Wert aus der Konfigurations-Datei einmal ausliest sich dort merkt und dann immer verwendet.

Aber leider gibt es so etwas bestimmt nicht ... es könnte ja so schön sein ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.593 Beiträge
 
Delphi 6 Enterprise
 
#28

AW: Das System kann den Pfad nicht finden

  Alt 5. Jul 2016, 15:57
Hi zusammen

Sir Rufos Vorschlag scheint mir wirklich plausibel. Der einzige "Wermutstropfen" dabei ist, dass es sich dabei um einen hartcodierten vollständigen Pfad handelt. Der würde natürlich nicht mehr funktionieren, wenn die Anwendung später auf meinem gemieteten Webspace laufen soll.
Das Rootverzeichnis meines Webspaces ist "/". Darüber hinaus habe ich keinen Zugriff/ist kein Zugriff erlaubt.
Das heisst: die Anwendng muss auf meinem Webspace zwingend unter diesem Verzeichnis liegen. Und wenn ich das richtig verstehe und interpretiere, müsste die Anwendung zur Entwicklungszeit unterhalb des html-Verzeichnisses liegen, was zur Zeit nicht der Fall ist. Damit könnten sich dann alle Pfade relativ zum HTML-Verzeichnis oder eben "/" beziehen.

Gruss
Delbor
Du hast einen / planst für einen gemieteten Webspace. Was darf den da laufen? Deine Datesnap-Server-Exe? Sowas geht?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
26.966 Beiträge
 
Delphi 10.3 Rio
 
#29

AW: Das System kann den Pfad nicht finden

  Alt 5. Jul 2016, 16:03
@Delbor
Mal ganz ehrlich: in der langen Zeit, in der Du Dich mit diesem Webgedöns schon herumschlägst (ich verfolge das ja nun schon eine ganze Weile, sowohl hier als auch im Delphi-Treff), hättest Du Dich mit einem der zahllosen (auch kostenfreien) CMS beschäftigen können, die bereits sehr ausgereift sind und ständig weiterentwickelt werden. Damit wärst Du wahrscheinlich schon um Lichtjahre weiter mit Deinem Projekt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
876 Beiträge
 
Delphi 10.3 Rio
 
#30

AW: Das System kann den Pfad nicht finden

  Alt 5. Jul 2016, 16:59
Hi zusammen
@Jumpy:
Zitat:
Du hast einen / planst für einen gemieteten Webspace. Was darf den da laufen? Deine Datesnap-Server-Exe? Sowas geht?
Nach telefonischer Auskunft des Hosters: ja. Auch eine Isapi.dll wäre möglich.

@DeddyH:
Zitat:
Mal ganz ehrlich: in der langen Zeit, in der Du Dich mit diesem Webgedöns schon herumschlägst (ich verfolge das ja nun schon eine ganze Weile, sowohl hier als auch im Delphi-Treff), hättest Du Dich mit einem der zahllosen (auch kostenfreien) CMS beschäftigen können, die bereits sehr ausgereift sind und ständig weiterentwickelt werden. Damit wärst Du wahrscheinlich schon um Lichtjahre weiter mit Deinem Projekt.
Das ist anzunehmen. Wobei - Teil meines Projektes ist ja meine Bilddatenbank, bzw. mein "Contentmaster". Und wie ich den mit zum Bleistift einer Typo3-Anwendung verbinde, um Inhalte einzupflegen, hab ich schlicht keine Ahnung.

Typo3 war längere Zeit meine Wahl. Wobei mir je länger je mehr unangenehm wurde, Aktualisierungen nur browserbasiert vornehmen zu können. Ausserdem das ganze durchwühlen der unzähligen Extensions und bis man herausgefunden hat, welche dieser Extensions.... Kurz und gut; ich glaube nicht wirklich, dass ich da sehr viel Zeit einsparen würde. Auch wenn selber Programmieren zum ersten mal zeitaufwändiger ist.
Dazu kommt, dass ich lieber etwas mehr in ein Projekt stecke, als nach dass ich nach einer gewissen Zeit feststelle, dass das gewählte Gratistool doch nicht so ganz meinen Wünschen entspricht.
Und natürlich kommt da auch noch eine gewisse Portion "Angefressenheit" dazu.

Diesen Faden könnte man jetzt noch unendlich weiterspinnen, bis hin zu der Frage:"Soll ich nicht doch....?" Andrerseits - wenn ich jedesmal, wenn etwas schwieriger zu werden droht, was neues beginne, komme ich nie irgendwohin...

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 07:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf