AGB  ·  Datenschutz  ·  Impressum  







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

Teilstring in Textdatei ändern

Offene Frage von "Bea"
Ein Thema von Bea · begonnen am 19. Mai 2006 · letzter Beitrag vom 31. Mai 2006
Antwort Antwort
Seite 1 von 2  1 2      
Bea

Registriert seit: 23. Dez 2004
53 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Teilstring in Textdatei ändern

  Alt 19. Mai 2006, 14:10
Hallo,
ich habe eine Datei "C:\temp\Test.001" in der ich zur Laufzeit meines Programms an einer bestimmten Stelle etwas ändern muss.
Der Inhalt der Datei sieht ungefähr immer wie folgt aus:
Wichtig für mich ist die Zeile
<StoreProperties DocumentName="Testdokument" />

Code:
<DWDocument DW5BasketFileName="Test.001">
  <FileInfos>
    <ImageInfos>
      <ImageInfo id="0,0,0" nPages="0">
        <FileInfo fileName="c:\Test\Test.DWTiff" dwFileName="Test.DWTiff" type="normal" />
      </ImageInfo>
    </ImageInfos>
  </FileInfos>
  <Section number="0" startPage="0" dwguid="f8494ff5-109f-46a5-b721-08a3be0a67b1">
    <Metadata version="0">
      <SystemProperties>
        <DiskNo>0</DiskNo>
        <PageCount>0</PageCount>
        <Flags>2</Flags>
      </SystemProperties>
      <FieldProperties />
      <StoreProperties DocumentName="Testdokument" />
    </Metadata>
    <Page number="0">
      <Rendition type="original">
        <Content id="0,0,0" pageNumberInFile="0" />
        <Annotation>
          <DW4CheckSum dwCheckSum="3652845198" dwDate="121402505" />
        </Annotation>
      </Rendition>
    </Page>
  </Section>
</DWDocument
Nun muss ich zur Laufzeit meines Programms den Eintrag in den Anführungsstrichen bei
<StoreProperties DocumentName="Testdokument" />
durch einen neuen Wert (z.B.123456789) ersetzen.

Kann mir bitte jemand sagen, wie soetwas am besten geht?
Ich bedanke mich schonmal im Vorraus für jede Hilfe.

CU Bea
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Teilstring in Textdatei ändern

  Alt 19. Mai 2006, 14:16
Du könntest die ganze Datei in eine Strinlist laden
Delphi-Quellcode:
var
  sl: TStringlist;
  pos: Byte;

begin
  sl:=TStringList.create;
  sl.loadfromFile('deinFile');
  pos:=sl.strings.indexof('<StoreProperties DocumentName="Testdokument" />');
  sl.string[pos]:='<StoreProperties DocumentName="was immer du willst" />');
  sl.savetoFile('deinFile');
  sl.free;
end;
vielleicht geht ja auch was mit xml, da kenne ich mich aber nicht mit aus.

Grüße
Klaus

[edit] delphi tags gesetzt
Klaus
  Mit Zitat antworten Zitat
Bea

Registriert seit: 23. Dez 2004
53 Beiträge
 
RAD-Studio 2009 Ent
 
#3

Re: Teilstring in Textdatei ändern

  Alt 19. Mai 2006, 14:22
Das Wort "Testdokument" ist hier doch nur ein Beispiel.
Ich kenne doch den ursprünglichen Eintrag zwischen den Anführungszeichen zur Laufzeit nicht.

Mit XML hab ich auch noch nie was gemacht und weiß eben auch nicht, ob und wie das hierfür überhaupt gehen würde.

CU Bea
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Teilstring in Textdatei ändern

  Alt 19. Mai 2006, 14:26
Delphi-Quellcode:
 DeineSuchBezeichnung:=edit1.text; //string
 DeineBezeichnung:=edit2.text; //string
 idx:=sl.strings.indexof('<StoreProperties DocumentName="'+deineSuchBezeichnung+'">');
 sl.strings[pos]:='<StoreProperties DocumentName="'+deineBezeichnung+'">';

oder

Delphi-Quellcode:
mit i : Byte;

  for i:=0 to sl.count -1 do
    begin
      if pos('<StoreProperties DocumentName=',sl.strings[i]) <> 0 then
         idx:=pos('<StoreProperties DocumentName=',sl.strings[i]);
    end;
so kannst Du auch einen Teilstring in der Liste suchen.
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Teilstring in Textdatei ändern

  Alt 19. Mai 2006, 14:29
Hallo Bea,

selbstverständlich ist das ein XML-Problem. Du kannst direkt auf dem MSXML Parser aufsetzen oder die Borland Komponente TXMLDocument verwenden. Du solltest eventuell die von dir verwendete Delphi-Version in dein DP-Profil eintragen.

Grüße vom marabu
  Mit Zitat antworten Zitat
Bea

Registriert seit: 23. Dez 2004
53 Beiträge
 
RAD-Studio 2009 Ent
 
#6

Re: Teilstring in Textdatei ändern

  Alt 19. Mai 2006, 14:38
Hallo Klaus,
irgendwie verstehst du nicht, was ich meine.
Ich weiß zur Laufzeit nie, was in den Anführungszeichen steht.
Ich kriege nur die Datei und weiß, dass ich dort genau an der Stelle zwischen den Anführungszeichen
<StoreProperties DocumentName="blablabla" />
einen von mir erzeugten Wert einschreiben muss.
Ich könnte als Suchkriterium also maximal das Stück
<StoreProperties DocumentName=
benutzen.

Deshalb weiß ich ja auch nicht, wie ich das so richtig anstellen soll.
Bei XML hab ich mal was von Tags gehört, aber was ist das, wie geht das und kann man diese Datei überhaupt mit XML- Zeugs behandeln?

CU Bea
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Teilstring in Textdatei ändern

  Alt 19. Mai 2006, 14:42
marabu hat geschrieben das geht mit XML und ich denke da hat er wohl auch recht.


Ansonsten geht es auch so:

Delphi-Quellcode:
mit i : Byte;

  for i:=0 to sl.count -1 do
    begin
      // wenn <StoreProperties DocumentName= in dem String gefunden wird
      // merke die Position (idx)
      if pos('<StoreProperties DocumentName=',sl.strings[i]) <> 0 then
         idx:=pos('<StoreProperties DocumentName=',sl.strings[i]);
     end;

   // ersetze an Position idx den String durch einen neuen
   sl.strings[idx]:='<StoreProperties DocumentName="'+'deineBezeichnung">';
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Teilstring in Textdatei ändern

  Alt 19. Mai 2006, 14:49
Kurz vor dem Abtauchen noch das hier:

Delphi-Quellcode:
uses
  XMLIntf,
  XMLDoc;

function XMLChange(markup, ePath, aName, oldValue, newValue: String): String;
var
  doc: IXMLDocument;
  nl: IDOMNodeList;
  e: IDOMElement;
  i: Integer;
  s: String;
begin
  doc := LoadXMLData(markup);
  with doc.DOMDocument as IDOMNodeSelect do
    nl := SelectNodes(ePath);
  for i := 0 to Pred(nl.length) do
  begin
    e := nl.item[i] as IDOMElement;
    s := e.getAttribute(aName);
    if CompareText(s, oldValue) = 0 then
      e.setAttribute(aName, newValue);
  end;
  Result := doc.XML.Text;
end;
marabu
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Teilstring in Textdatei ändern

  Alt 19. Mai 2006, 14:50
@marabu

und wenn sie den oldvalue nicht kennt?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Teilstring in Textdatei ändern

  Alt 19. Mai 2006, 14:58
Kenn mich mit XML ja och kaum aus, aber meiner Meinung nach sollte es doch möglich sein nach dem "Feld" (oder wie man dat zwischen "<" und ">" nennt) "StoreProperties" zu suchen und dort dem "Parameter"? einfach einen neuen wet zuzuweisen, dafür bäuchte man ja theoretsch nicht zu wissen was da überhaupt drinsteht?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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:34 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