AGB  ·  Datenschutz  ·  Impressum  







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

Stream bearbeiten - wie?

Ein Thema von Susanne · begonnen am 1. Okt 2004 · letzter Beitrag vom 4. Okt 2004
Antwort Antwort
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#1

Stream bearbeiten - wie?

  Alt 1. Okt 2004, 15:49
Hilfe,

Ich habe eine Datei, die hat in einer Zeile z.B. folgenden Eintrag:

Code:
LIEFERSCHEIN        166.000            18/08/2004     6602                          SN15743         166.000        test GMBH /EMAIL/DOCS/LS000000000000040.PDF
Ich möchte nun jeweils bei 166.000 den Punkt entfernen und hinter 000 ein Leerzeichen einfügen. Aber wie um himmelswillen mache ich das?

bisher habe ich nur das:

Delphi-Quellcode:
function Konvertiere(aktuelleDatei:String): Boolean;
   begin
      //Datei in den MemoryStream xx geladen
      xx.LoadFromFile(aktuelleDatei);
  

      xx.SaveToFile(aktuelleDatei);
   end;
mit pos könnte ich den erste Punkt ermitteln, aber wie geht es dann weiter? und wie füge ich ein Leerzeichen dazu?

Wer hat eine Idee?

Gruss
Susanne
Susanne
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#2

Re: Stream bearbeiten - wie?

  Alt 1. Okt 2004, 16:21
Ein leerzeichen? Oder auch wirklich den Stream um dieses zeichen verkürzen?
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#3

Re: Stream bearbeiten - wie?

  Alt 1. Okt 2004, 16:54
ich gehe davon aus, dass der text in einem string s steht!

dann so:

Delphi-Quellcode:
..
var txt, // hier steht deine zeile drin
    stxt, // zu suchender text
    hilf: string; // hilfstext
    p, // pos des suchtextes
    l: integer; // länge des suchtextes

..
  stxt:='166.000';
  l:=length(stxt);
  p:=pos(stxt,txt);

  while p>0 do
  begin
    hilf:=copy(txt,p,l); // suchtext im string
    delete(hilf,pos('.',hilf),1); // punkt löschen

    hilf:=copy(txt,1,p-1)+hilf+' '; // string bis position p + ersetztext + ' ';
    delete(txt,1,p+l-1); // lösche teilstring bis position nach stext

    txt:=hilf+txt; // rest zusammenfügen

    p:=pos(stxt,txt); // ist noch ein stext vorhanden?
  end;
..
  Mit Zitat antworten Zitat
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Stream bearbeiten - wie?

  Alt 4. Okt 2004, 08:43
Ab die zu suchende Zahl kann variieren, es ist nicht immer '166.000' und ich weiss auch nicht, ob die Zahl die gleiche länge hat und anschliessend wollte ich diesen veränderten Stream wieder als Datei speichern.
Susanne
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Stream bearbeiten - wie?

  Alt 4. Okt 2004, 08:58
du könntest das ganze mit PosEx machen, damit kannst du die start-such-position angeben.
Ungefähr so sollte das ganze dann aussehen (davon ausgegangen das dein Stream in "Suchstring" steht
Delphi-Quellcode:
var LStartpos: Integer;
    LZahlen: String;
begin
  LZahlen := '0123456789';
  LStartpos := 1;
  while (LStartpos < length(Suchstring)) and (LStartpos > 0) do
  begin
    LStartpos := PosEx('.', Suchstring, LStartpos);
    if LStartpos > 0 then //wenn punkt gefunden wurde
    begin
      //sicherstellen das nicht ".pdf" etc gefunden wurde sonder eine zahl folgt
      if pos(Suchstring[LStartpos + 1], LZahlen) > 0 then
      begin
        //punkt entfernen
        Suchstring := copy(Suchstring, 1, LStartpos - 1) + copy(Suchstring, LStartpos +1, length(Suchstring));
        //jetzt noch letzte zahl finden um leerzeichen einzufügen
        while pos(Suchstring[LStartpos], LZahlen) > 0 do inc(LStartpos);
        //jetzt sollte LStartpos hinter der letzten zahl sein
        Suchstring := copy(Suchstring, 1, LStartpos - 1) + ' ' + copy(Suchstring, LStartpos, length(Suchstring));
      end else inc(LStartpos);
    end;
  end;
Source ist ungetestet und soll nur als gedankenanstoß dienen
[Edit]Inzwischen getestet und funzt (Source verbessert)[/Edit]
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#6

Re: Stream bearbeiten - wie?

  Alt 4. Okt 2004, 11:52
Danke das hat mir sehr geholfen, es funktioniert.
Susanne
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:32 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