tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
8068
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Binio Binio ist offline Mitglied Gold
    Registriert seit
    Oct 2004
    Ort
    Werl
    Beiträge
    215
    Hallo ich bin ziehmlicher Delphi 7 neuling.
    Habe folgendes Vor.
    Möchte eine test.txt öffnen und dort nach Strings suchen.

    bsp:
    i v=1
    oder
    x 1.6 Linker Innenrand:
    oder
    i A=0
    oder
    x 1.7 Rechter Innenrand:
    oder
    i R=0
    ...

    möchte dann denn z.b. x 1.6 Linker Innenrand: fehlt diesen einfügen.
    Dachte da an If abfragen.
    if (aktuelle Zeile != "x 1.6 Linker Innenrand:")
    {
    "enter einfügen" und dann "x 1.6 Linker Innenrand: einfügen"
    }

    ein anderes Programm liest die test.txt aus und nutze die darin enthaltenen Informationen um damit zu arbeiten. Ich habe ca 70 Zeilen die befehle/Informationen enthalten.
    Wenn z.B. eine Zeile fehlt bekommt das andere Programm ein Error.
    Daher muss ich dafür sorgen das alles Zeilen da sind und wenn diese nicht vorhanden sind mit ein standart wert füllen und abspeichern.
    Kann mir da bitte einer helfen ?
    danke im vorraus

    Mfg
    Robert
     
    Ich denke, also bin ich.

  2. #2
    vop vop ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Beiträge
    676
    Verwende doch einfach eine Memo-Komponente.

    Mit bspw.
    Memo1.Lines.LoadFromFile( Dateiname)
    kann man eine Textdatei öffnen.

    Auf die einzelnen Zeilen kannst Du über in einer Schleife
    for i:= 0 to Memo1.Lines.Count-1 dobegin
    Machwasmit( Memo1.Lines[i] );
    end;

    zugreifen.

    Hoffe das hilft schon mal

    vop
     

  3. #3
    Binio Binio ist offline Mitglied Gold
    Registriert seit
    Oct 2004
    Ort
    Werl
    Beiträge
    215
    mit
    Code :
    1
    
     if pos(soll[zeilennrsoll], ist.Text)=0 then begin ...
    kann ich die einzelnen Zeilen vergleichen ob im "soll Text" die Zeilen im "ist text" sind.
    wenn aber in ist text.

    "wohnort = werl"

    steht und im soll text

    "wohnort = standart"

    sagt pos das er den "wohnort = standart" im ist text nicht finden kann weil er ja ganze Zeile untersucht und nicht nur das erste Wort.
    Eigentlich sollte der bei diesen Beispiel nichts machen.
    Mein Quell text jedoch fügt eine neue Zeile ein mit "Wohnort = standart".
    Habe dann im "ist text"

    "wohnort = werl"
    "wohnort = standart"

    stehen. Also ein doppelten eintrag.
    GIbt es eine function die nur das erste Wort in einer Zeile einliest?
    oder die ersten 2 Wörter, etc ?


    Quelltext:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
     procedure TForm1.Button2Click(Sender: TObject);
    var soll: TStringList;
    var ist: TStringList;
    var zeilenfehlen: Array[1..1000] of integer;
    var zeilennrsoll: integer;
    var zeilennrist: integer;
    var richtig: integer;
    begin
    soll:=TStringList.Create; //Objekt erzeugen
    ist:=TStringList.Create; //Objekt erzeugen
    richtig:=0;
        try
         soll.LoadFromFile('C:\soll.hbs'); //Datei in Stringliste laden
         ist.LoadFromFile('C:\ist.hbs'); //Datei in Stringliste laden
         for zeilennrsoll:=0 to soll.Count-1 do begin //Schleife über alle Zeilen, Zählung
                                                     //beginnt mit 0, die Eigenschaft Count
                                                     //enthält die Gesamtzahl der Zeilen
             if pos(soll[zeilennrsoll], ist.Text)=0 then begin
                ShowMessage('Zeile '+IntToStr(zeilennrsoll+1)+' wurde nicht gefunden');
                ist.Insert(zeilennrsoll,soll[zeilennrsoll]);
                ist.SaveToFile('C:\ist.hbs');
             end
         end;
        finally
    soll.free; //Objekt wieder freigeben
    end;
    end;
     
    Ich denke, also bin ich.

  4. #4
    vop vop ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Beiträge
    676
    Wenn Du StringListen verwendest, kannst du auch mit den Namen/Werte-Paaren arbeiten

    ist.IndexOfName('wohnort')

    liefert dir den Index der Zeile in der Stringliste, die mit wohnort=... beginnt

    ist.ValueFromIndex( index )
    liefert Dir dazu den Wert zu dieser Zeile,
    also in deinem bsp. 'stanard'
    alles klar?

    vop
     

  5. #5
    Binio Binio ist offline Mitglied Gold
    Registriert seit
    Oct 2004
    Ort
    Werl
    Beiträge
    215
    ok das ist super danke Ich teste es gleich morgen früh.
    Danke vop für die super schnelle Hilfe
     
    Ich denke, also bin ich.

  6. #6
    WieGehts WieGehts ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Beiträge
    130
    Hallo,
    ist das Programm, welche die Werte aus xx.txt verwendet schon fertig? Wenn nicht, solltest du dir ev. auch TIniFile in der Delphihilfe ansehen. Diese Komponente unterstützt genau das, was du brauchst.
     

Ähnliche Themen

  1. in Strings suchen und ausschneiden
    Von Binio im Forum Delphi, Kylix, Pascal
    Antworten: 1
    Letzter Beitrag: 04.11.05, 12:06
  2. Antworten: 5
    Letzter Beitrag: 13.07.05, 09:37
  3. Strings suchen und abspeichern
    Von Neral im Forum .NET Archiv
    Antworten: 2
    Letzter Beitrag: 30.08.04, 15:04
  4. bestimmte Strings aus Textdatei kopieren
    Von Kimble im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 10.08.03, 21:57
  5. professionelles suchen in strings
    Von Visual EZ++ im Forum Delphi, Kylix, Pascal
    Antworten: 6
    Letzter Beitrag: 13.05.02, 13:54