Glengamoi · AspHeute (Artikel) · .NET Heute (RSS-Suche) · .NET Blogs · Glengamoi Suche (Installieren via Klick)

Glengamoi

Die Diskussionsforen der deutschen .NET Community
Willkommen bei Glengamoi. Anmeldung | Registrieren | Hilfe
in Suchen

Platzhalter in RTF Datei durch Formularwerte ersetzen

Letzter Beitrag 07-26-2007 17:55 von Hubert Daubmeier. 16 Antworten.
Seite 1 von 2 (17 Treffer) 1 2 > Weiter
Beiträge sortieren: Zurück Weiter
  • 07-17-2007 16:40

    Platzhalter in RTF Datei durch Formularwerte ersetzen

    Hallo ASP-Profis

    Auf dem Server hab ich einen Musterbrief in welchem sich Platzhalter für Adresse und Anrede enthalten sind. Diese sollen via Formular ersetzt werden.

    Beim Senden des Forms erhalte ich folgende Fehlermeldung: "Cannot use parentheses when calling a Sub"

    Danke für Eure Hilfe 

    Ursina 

    Code:

    Const ForReading    = 1
    Const ForWriting     = 2
    Const TristateFalse = 0

    Dim FSO
    Dim objFile
    Dim strFile
    Dim strFileContent

    Set FSO = Server.CreateObject("Scripting.FileSystemObject")
    Set objFile = FSO.OpenTextFile(strFile)
    While Not objFile.AtEndOfStream
       strFileContent = strFileContent & objFile.ReadLine & "<br>"
    Wend

    strFileContent = strFileContent.Replace("<<Strasse>>", Request.Form("fldStrasse"))
    objFile.Write(ReplaceText)
    objFile.Close
    Set objFile = nothing
    Set FSO = nothing

     

    • IP-Adresse ist Registriert
  • 07-17-2007 16:57 Antwort zu

    AW: Platzhalter in RTF Datei durch Formularwerte ersetzen

    Du verwendest irgendwo...(habe nicht genau nachgeschaut ;-))
    ein Sub als Function.

    Subs haben keine Klammern !!!

    Gruss,
    Oliver
    Cheers,
    Oliver
    • IP-Adresse ist Registriert
  • 07-17-2007 17:14 Antwort zu

    AW: Platzhalter in RTF Datei durch Formularwerte ersetzen

    Ursina Huwiler:
    While Not objFile.AtEndOfStream
       strFileContent = strFileContent & objFile.ReadLine & "<br>"
    Wend

    Der Teil geht einfacher per

    strFileContent = objFile.ReadAll

    Dann kommt die Ersetzung - sollte so passen

    Ursina Huwiler:
    strFileContent = strFileContent.Replace("<<Strasse>>", Request.Form("fldStrasse"))
     

    Dann musst du nur noch das Ersetzte auch verwenden  :-)

    Ursina Huwiler:
    objFile.Write(ReplaceText)

    Sprich den Inhalt der Variablen wegschreiben die den ersetzen Inhalt enthält.  Da braucht es keine Klammer; schaden tut sie aber auch nicht

    objFile.Write strFileContent

    (Schätze mal da lungert noch irgendwo im Hintergrund eine ReplaceText Sub rum

    --

    Viele Grüße
    Hubert Daubmeier 

     

     

    • IP-Adresse ist Registriert
  • 07-17-2007 17:54 Antwort zu

    AW: Platzhalter in RTF Datei durch Formularwerte ersetzen

    Im Script ist nirgendwo eine Funktion. 

    @ Hubert 

    So bekomme ich die folgende Fehlermeldung: 

    Microsoft VBScript runtime error '800a01a8'

    Object required: '{\rtf1\ansi\ansicpg1'

    /intern/katalogbestellung_ch.asp, line 192

    Line 192:

        strFileContent = strFileContent.Replace("<<Strasse>>", Request.Form("fldStrasse"))

    Gibt es da ein Problem mit dem RTF Format.  

    Code:

       Set FSO = Server.CreateObject("Scripting.FileSystemObject")
       Set objFile = FSO.OpenTextFile(strFile)
         strFileContent = objFile.ReadAll
        strFileContent = strFileContent.Replace("<<Strasse>>", Request.Form("fldStrasse"))
        objFile.Write strFileContent
      objFile.Close
      Set objFile = nothing
      Set FSO = nothing


    Grüsse
    Ursina
     

     

    • IP-Adresse ist Registriert
  • 07-17-2007 18:59 Antwort zu

    AW: Platzhalter in RTF Datei durch Formularwerte ersetzen

     Hab's mal so probiert:

       Set FSO = Server.CreateObject("Scripting.FileSystemObject")
       Set objFile = FSO.OpenTextFile(strFile)
         strFileContent = objFile.ReadAll

        strFileContent = Replace(strFileContent, "<<Strasse>>", Request.Form("fldStrasse"))
        objFile.Write strFileContent
      objFile.Close

      Set objFile = nothing
      Set FSO = nothing

    Dann erhalte ich auch eine Fehlermeldung:

    Microsoft VBScript runtime error '800a0036'

    Bad file mode

    /intern/katalogbestellung_ch.asp, line 171

    Line 171:

        objFile.Write strFileContent

    Grüsse
    Ursina 

     

    • IP-Adresse ist Registriert
  • 07-17-2007 21:01 Antwort zu

    AW: Platzhalter in RTF Datei durch Formularwerte ersetzen

    Ach ja - man könnte die Datei noch zum Schreiben aufmachen  :-)

    Bei der Gelegenheit, willst du wirklich Dein Template-Datei überschreiben?

    	' -- Konstanten
    	Const EAModus = 2  ' ForWriting
    	Const Erstellen = True ' Erstellen falls nicht vorhanden
    	Const Format = 0 ' ASCII Format
    	
    	' -- template lesen
    	Set FSO = Server.CreateObject("Scripting.FileSystemObject")
    	Set objFile = FSO.OpenTextFile(strFile)
    	strFileContent = objFile.ReadAll
    	objFile.Close
    	
    	' -- Inhalte füllen
    	strFileContent = Replace(strFileContent, "<>", Request.Form("fldStrasse"))
    	
    	' -- Wegschreiben
    	Set objFile = FSO.OpenTextFile(strFile & ".out", EAModus, Erstellen, Format)
    	objFile.Write strFileContent
    	objFile.Close
    	
    	' -- Aufräumen
    	Set objFile = nothing
    	Set FSO = nothing
    
    

    BTW: Du weisst, dass du nicht überall schreiben darfst? 
    BTW 2: Ich hänge dir mal die dazu passende Hilfeseite dazu.  Such mal auf Deiner Platte nach vbscrip5.chm.  Da steht alles drin.

    -- 
    Viele Grüße
    Hubert Daubmeier 

     

    Beschreibung
    Öffnet eine angegebene Datei und gibt ein TextStream-Objekt zum Lesen aus der Datei, Schreiben in die Datei oder Anfügen an die Datei zurück.
    Syntax
    Objekt.OpenTextFile(Dateiname[, E/A-Modus[, Erstellen[, Format]]])

    Die Syntax der OpenTextFile-Methode besteht aus folgenden Teilen:

    Teil Beschreibung
    Objekt Erforderlich. Stets der Name eines FileSystemObject-Objekts.
    Dateiname Erforderlich. Zeichenfolgenausdruck, der die zu öffnende Datei angibt.
    E/A-Modus Optional. Gibt den Ein-/Ausgabemodus an. Es gibt drei mögliche Konstanten: ForReading, ForWriting oder ForAppending.
    Erstellen Optional. Boolescher Wert, der angibt, ob eine neue Datei erstellt werden soll, wenn der angegebene Dateiname nicht existiert. True, wenn eine neue, False, wenn keine neue Datei erstellt werden soll. Der Standard ist False.
    Format Optional. Einer von drei Tristate-Werten, mit denen das Format der geöffneten Datei angegeben wird. Ohne Angabe wird die Datei als ASCII geöffnet.

    Einstellungen
    Das Argument E/A-Modus kann einen der folgenden Werte annehmen:

    Konstante Wert Beschreibung
    ForReading 1 Öffnet eine Datei nur zum Lesen. Schreibzugriffe sind nicht möglich.
    ForWriting 2 Öffnet eine Datei nur zum Schreiben. Sie können nicht aus ihr lesen.
    ForAppending 8 Öffnet eine Datei und schreibt an das Dateiende.

    Das Argument Format kann eine der folgenden Einstellungen aufweisen:

    Konstante Wert Beschreibung
    TristateUseDefault -2 Öffnen der Datei im Format des Systemstandards.
    TristateTrue -1 Öffnen der Datei im Unicode-Format.
    TristateFalse  0 Öffnen der Datei im ASCII-Format.

    Hinweise
    Der folgende Code verdeutlicht die Verwendung der OpenTextFile-Methode, um eine Datei zum Schreiben von Text zu öffnen:
    Sub OpenTextFileDemo
      Const ForReading = 1, ForWriting = 2, ForAppending = 8
      Dim fso, f
      Set fso = CreateObject("Scripting.FileSystemObject")
      Set f = fso.OpenTextFile("c:\test.txt", ForWriting, True)
      f.Write "Hallo Welt!"
      f.Close
    End Sub
    
    • IP-Adresse ist Registriert
  • 07-17-2007 21:02 Antwort zu

    AW: Platzhalter in RTF Datei durch Formularwerte ersetzen

    Was da im Code fehlt hat der CS "verschluckt" - die öffnende und schliessende spitze Klammer samt dem was dazwischen steht.

    • IP-Adresse ist Registriert
  • 07-18-2007 15:44 Antwort zu

    AW: Platzhalter in RTF Datei durch Formularwerte ersetzen

    Danke  für die vielen Hinweise. Nach diesen Erklärungen hab ich gestern gesucht und sie nirgends gefunden - sehr hilfreich :-)

    Nein, ich möchte mein Template natürlich nicht überschreiben, sondern die neue Datei direkt an ein Mail anhängen. Wie mach ich das?

    In welchem Format muss eine RTF-Datei geöffnet und geschrieben werden? Ich hab sie mit TristateFalse geöffnet, also im ASCII-Format.

    Danke

    Grüsse
    Ursina

     

    • IP-Adresse ist Registriert
  • 07-18-2007 18:34 Antwort zu

    AW: Platzhalter in RTF Datei durch Formularwerte ersetzen

     

    Datei schreiben:  nimm ein Verzeichnis das Schreib- aber keine Leserechte hat. Das wäre bei Standard-Installation (IIS 5 und 6) etwa das virtuelle Verzeichnis /scripts.  Oder bei installierten Frontpage Extensions hast du in jedem Web ein _private Verzeichnis, wo die Rechte passend sitzen.  Oder schreib in ein neu erstelltes virtuelles Verzeichnis mit wie gesagt: schreiben ja: lesen und browsen: nein.

    ASCII-Format ist richtig an der Stelle. Bedeutet nicht als Unicode (16-bit Zeichen).

    --
    Viele Grüße
    Hubert Daubmeier

     

    Abgelegt unter: ,
    • IP-Adresse ist Registriert
  • 07-18-2007 18:54 Antwort zu

    AW: Platzhalter in RTF Datei durch Formularwerte ersetzen

     Läuft alles bis auf das Ersetzen der Platzhalter.

    strFileContent = Replace(strFileContent, "<<Strasse>>", Request.Form("fldStrasse"))

     lasse ich die << >> weg, wird der Text ersetzt. Hab auch mit <*Strasse*> probiert - geht auch nicht. Welche Zeichen würden den gehen?

     Grüsse
     Ursina
     

    • IP-Adresse ist Registriert
  • 07-19-2007 0:26 Antwort zu

    Re: AW: Platzhalter in RTF Datei durch Formularwerte ersetzen

    Schuss ins Blaue

    schau doch mal ob und ggf. wie die spitzen Klammern in RTF maskiert
    werden. Angenommen das wäre HTML, dann würde da nicht <
    sonden &lt;&lt; Was ähnliches könnte da zutreffen.

    Oder nimm einfach andere Zeichen. Eckige Klammern etwa. Oder was banales
    wie XXStrasseXX


    --
    Viele Grüße
    Hubert Daubmeier


    >
    > Läuft alles bis auf das Ersetzen der Platzhalter.
    >
    > strFileContent = Replace(strFileContent, &quot;&quot;,
    > Request.Form(&quot;fldStrasse&quot;))
    > lasse ich die > weg, wird der Text ersetzt. Hab auch mit probiert - geht
    > auch nicht. Welche Zeichen würden den gehen?
    > Grüsse
    > Ursina
    >
    >
    >
    >
    • IP-Adresse ist Registriert
  • 07-19-2007 15:36 Antwort zu

    AW: Re: AW: Platzhalter in RTF Datei durch Formularwerte ersetzen

    Ich glaub ich kann nehmen was ich will, es funktioniert nicht (xx...xx, nn...nn, [...], <*...*>, &lt;&lt;...&gt;&gt;) ... es ist zum heulen :-( 

    ohne irgendwelche Markierung kann ich es nicht machen, da sonst auch andere Textteile im Brief ersetzt würden, die so bleiben sollen.

    > schau doch mal ob und ggf. wie die spitzen Klammern in RTF maskiert
    > werden. Angenommen das wäre HTML, dann würde da nicht <
    > sonden &lt;&lt; Was ähnliches könnte da zutreffen.

    und wie/wo finde ich das heraus?

    Grüsse
    Ursina
     

    • IP-Adresse ist Registriert
  • 07-24-2007 20:16 Antwort zu

    AW: Re: AW: Platzhalter in RTF Datei durch Formularwerte ersetzen

    Wer kann mir helfen? Ich dreh noch durch... 

    Platzhalter in der RTF Datei: 

    ==Vorname1== ==Name1==
    ==Name2==
    ==Name3==
    ==Strasse== ==Hausnummer==
    ==PLZ== ==Ort== 

    Warum wird mit dem folgenden Script immer nur die ==Strasse== ersetzt? Auch wenn ich die ==Zeichen wegnehme, es wird immer nur die Strasse ersetzt.

        strFileContent = Replace(strFileContent, "==Vorname1==", Request.Form("fldVorname1"))
        strFileContent = Replace(strFileContent, "==Name1==", Request.Form("fldName1"))
        strFileContent = Replace(strFileContent, "==Name2==", Request.Form("fldName2"))
        strFileContent = Replace(strFileContent, "==Name3==", Request.Form("fldName3"))
        strFileContent = Replace(strFileContent, "==Strasse==", Request.Form("fldStrasse"))
        strFileContent = Replace(strFileContent, "==Hausnummer==", Request.Form("fldHausNr"))
        strFileContent = Replace(strFileContent, "==PLZ==", Request.Form("fldPLZ"))
        strFileContent = Replace(strFileContent, "==Ort==", Request.Form("fldOrt"))
        strFileContent = Replace(strFileContent, "==aktuellesDatum==", Date())
        strFileContent = Replace(strFileContent, "==Anrede==", Request.Form("fldAnrede"))
        objFile.Write strFileContent
      objFile.Close

    Vielen Dank

    Grüsse
    Ursina
     

    • IP-Adresse ist Registriert
  • 07-24-2007 23:58 Antwort zu

    AW: AW: Re: AW: Platzhalter in RTF Datei durch Formularwerte ersetzen

    Soweit ich das sehen kann – an dem hier gezeigtem Script kann es fast nicht liegen.

     

    Also eher außerhalb.  Werden die Felder richtig übergeben?  Schneller Test siehe  http://www.aspgerman.com/wiki/default.aspx/AspGerman.DebuggenVonFormularfeldern

     

    Oder lass dir nach jedem Ersetzen das Ergebnis ausgeben.  

     

     

    Gruß

    Hubert

     

    Von: Ursina Huwiler [mailto:bounce-Ursina_Huwiler@glengamoi.com]
    Gesendet: Dienstag, 24. Juli 2007 20:18
    An: hubertd@neusob.de
    Betreff: [ASP] AW: Re: AW: Platzhalter in RTF Datei durch Formularwerte ersetzen

     

    Wer kann mir helfen? Ich dreh noch durch... 

    Platzhalter in der RTF Datei: 

    ==Vorname1== ==Name1==
    ==Name2==
    ==Name3==
    ==Strasse== ==Hausnummer==
    ==PLZ== ==Ort== 

    Warum wird mit dem folgenden Script immer nur die ==Strasse== ersetzt? Auch wenn ich die ==Zeichen wegnehme, es wird immer nur die Strasse ersetzt.

        strFileContent = Replace(strFileContent, "==Vorname1==", Request.Form("fldVorname1"))
        strFileContent = Replace(strFileContent, "==Name1==", Request.Form("fldName1"))
        strFileContent = Replace(strFileContent, "==Name2==", Request.Form("fldName2"))
        strFileContent = Replace(strFileContent, "==Name3==", Request.Form("fldName3"))
        strFileContent = Replace(strFileContent, "==Strasse==", Request.Form("fldStrasse"))
        strFileContent = Replace(strFileContent, "==Hausnummer==", Request.Form("fldHausNr"))
        strFileContent = Replace(strFileContent, "==PLZ==", Request.Form("fldPLZ"))
        strFileContent = Replace(strFileContent, "==Ort==", Request.Form("fldOrt"))
        strFileContent = Replace(strFileContent, "==aktuellesDatum==", Date())
        strFileContent = Replace(strFileContent, "==Anrede==", Request.Form("fldAnrede"))
        objFile.Write strFileContent
      objFile.Close

    Vielen Dank

    Grüsse
    Ursina
     



    • IP-Adresse ist Registriert
  • 07-26-2007 10:30 Antwort zu

    AW: AW: Re: AW: Platzhalter in RTF Datei durch Formularwerte ersetzen

    Hallo Hubert

    Also eher außerhalb.  Werden die Felder richtig übergeben?  Schneller Test siehe  http://www.aspgerman.com/wiki/default.aspx/AspGerman.DebuggenVonFormularfeldern

    Der Test ist ok. Die Felder werden richtig ausgegeben.

    Oder lass dir nach jedem Ersetzen das Ergebnis ausgeben.  

    Wie kann ich mir nach jedem Ersetzen das Ergebnis anzeigen lassen. Mit eine MessageBox geht's nicht.
    Das ganze ist Neuland für mich, ich bitte um Verständnis. Danke

    Ursina 


    • IP-Adresse ist Registriert
Seite 1 von 2 (17 Treffer) 1 2 > Weiter