AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi String nach Zeichen absuchen und davor alles löschen
Thema durchsuchen
Ansicht
Themen-Optionen

String nach Zeichen absuchen und davor alles löschen

Ein Thema von poker1337 · begonnen am 11. Dez 2007 · letzter Beitrag vom 11. Dez 2007
Antwort Antwort
poker1337

Registriert seit: 26. Apr 2007
8 Beiträge
 
#1

String nach Zeichen absuchen und davor alles löschen

  Alt 11. Dez 2007, 15:23
Hallo!

Ich beschäftige mich gerade mit Textdateien und ähnlichem, und jetzt bin ich auf ein Problem gestoßen!

Die textdatei enthält foldendes:

abcdefguxxxxxxxxx
eerrrxxxxxxxxxaaa
ooooosssosoa:sspapqpq
assas:soapqw:ioadsiod

usw.

Ich habe die Textdatei mit sl.Loadfromfile erfolgreich geladen,
und mit der Funktion "for zeilennr:=0 to sl.Count-1 do" lasse ich die Textdatei Zeile für Zeile
durchsuchen!

Mittels POS() suche ich dann das erste ':', denn ich will das erste ':' finden
und alles was DAVOR steht löschen.
Die Position findet er, nur wie geht es weiter?
Mit delete(sl[zeilennr], 1 , posi);
kriege ich diesen Error:

[DCC Fehler] Unit2.pas(64): E2197 Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden

Ich weiß nicht warum, vll kann mir hier einer helfen
oder einen anderen Ansatz vorschlagen und ggf. wie ich das anders mit ner Textfile handle.

Code habe ich hier:
sl: TStringlist
zeilennr: Integer
posi: Integer

Delphi-Quellcode:
 for zeilennr:=0 to sl.Count-1 do

            begin
                Memo1.Lines.Add(sl[zeilennr]);
                
            posi := POS(':', sl[zeilennr]);
            delete(sl[zeilennr], 1 , posi);
            Memo2.Lines.Add(sl[zeilennr]);

            end;
         finally
            sl.free; //Objekt wieder freigeben
        end;
[edit=SirThornberry] Code-Tags durch Delphi-Tags ersetzt - Mfg, SirThornberry[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: String nach Zeichen absuchen und davor alles löschen

  Alt 11. Dez 2007, 15:29
delete erwartet einen string den es ändern kann (also intern die Adresse wo der String steht). Du übergibst allerdings TStringList.Strings[i] und das ist ein Property. Dahinter kann sich also eine Funktion verbergen. Du musst also das Funktionsergebnis auf einen String zuweisen, den String der Delete-Funktion übergeben und dann den String zurück schreiben.

du versuchst im Moment also folgendes aufzuführen:
delete(Stringliste.GetString(Index)); Und hier wäre unklar wo das Ergebnis hinn soll.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: String nach Zeichen absuchen und davor alles löschen

  Alt 11. Dez 2007, 15:35
Moin Poker,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Mit Delete funktioniert es nicht, da die Eigenschaft Strings einer TStringList keine Variable ist.
(Weil Strings die Default-Eigenschaft einer TStringList ist muss man sie nicht mitschreiben, sondern direkt sl[Index] schreiben, statt sl.Strings[Index])

Du könntest Dir mit Copy behelfen, z.B. so:

sl[ZeilenNr] := Copy(sl[ZeilenNr],Pos(':',sl[ZeilenNr])+1,MaxInt); Pos(':',sl[ZeilenNr])+1
damit der Abschnitt hinter dem : angesprochen wird, und

MaxInt
weil der Rest des Strings übertragen werden soll, und Copy automatisch aufhört, wenn der String zu Ende ist. Man muss in diesem Falle also nicht berechnen, wie lang der String ist, der kopiert werden soll.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
poker1337

Registriert seit: 26. Apr 2007
8 Beiträge
 
#4

Re: String nach Zeichen absuchen und davor alles löschen

  Alt 11. Dez 2007, 15:43
Wow!
Danke für die schnelle Antwort!
Und dann direkt 2

Mit
sl[ZeilenNr] := Copy(sl[ZeilenNr],Pos(':',sl[ZeilenNr])+1,MaxInt); hat alles geklappt,
Vielen Dank!


Hab jetzt noch ne frage:

Wie kann ich dann das zweite mit dem dritten vertauschen?
  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 12:35 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