AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

eine Textdatei (.txt) in Dephi auswerten

Ein Thema von Financeflash · begonnen am 8. Jan 2010 · letzter Beitrag vom 9. Jan 2010
Antwort Antwort
Seite 1 von 2  1 2   
Financeflash

Registriert seit: 8. Jan 2010
5 Beiträge
 
#1

eine Textdatei (.txt) in Dephi auswerten

  Alt 8. Jan 2010, 17:00
Hi
Ich habe diese .txt Datei:
SuperDepp =1
superdepp= 3
sUperdepp = 5
superdepp = 7
superdepp =9
superdepp= 3
Superdepp=7
SUPERDEPP=7
suppendepp=11
hupersep= b
superdepp=a
sUperdep=c
superdepp==7
superdepp-9
superdepp 3
superdepp 7
pupersepp=7
SUPERdepp= 3
superDEPP= 5
SUPERDEPP= 7
SUPERDEPP= 9
SUPERDEPP= 7
SUPERDEPP= 9
SuPeRdEpP=9

Jede Zeile = eine SMS
Damit die SMS gültig ist muss sie dies beinhalten: superdepp=1..10
groß und kleinschreibung ist egal, leerzeichen sind auch egal. nur wenn ein Buchstabe oder eine höhere Zahl als 10 hinter dem = steht, muss die SMS als ungültig gewertet werden
Wie kann ich wissen wie oft z.B.: die 7 vorhanden ist?
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: eine Textdatei (.txt) in Dephi auswerten

  Alt 8. Jan 2010, 17:04
Pos, Copy, Schleife, TStringlist.
Blackheart
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#3

Re: eine Textdatei (.txt) in Dephi auswerten

  Alt 8. Jan 2010, 17:04
Hallo,

Ich würde den Text Zeilenweise in eine TSringList lesen und dann auswerten.Suche mal nach den Funktionen ReadLn und Pos

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

Re: eine Textdatei (.txt) in Dephi auswerten

  Alt 8. Jan 2010, 17:06
Regex könnte hilfreich sein.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.987 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: eine Textdatei (.txt) in Dephi auswerten

  Alt 8. Jan 2010, 17:18
Reguläre Ausdrücke würde ich bei der simplen Aufgabe nicht nutzen. Bei vielen Einträgen sind die viel zu langsam.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

Re: eine Textdatei (.txt) in Dephi auswerten

  Alt 8. Jan 2010, 17:24
Zitat von Jens Hartmann:
Hallo,

Ich würde den Text Zeilenweise in eine TSringList lesen und dann auswerten.Suche mal nach den Funktionen ReadLn und Pos

Gruß Jens
wieso so umständlich?
Delphi-Quellcode:
var
  MyList : TStringList;
...
  MyList.LoadFromFile( 'SMS.txt' );
und jetzt zunächst normalisieren
Delphi-Quellcode:
MyList.Text := UpperStr( MyList.Text ); // Alles in GROSS
MyList.Text := StringReplace( MyList.Text, ' ', '', [ rfReplaceAll ] ); // Leerzeichen raus
MyList.Text := StringReplace( MyList.Text, '==', '=', [ rfReplaceAll ] ); // doppelte = Zeichen raus
usw. bis der ganze Text reingewaschen ist

und jetzt kann man auswerten

Du hast ja Beispiele für den Inhalt gegeben, es wäre aber ungemein hilfreich, wenn du für jede Zeile geschrieben hättest, ob die gültig ist, oder nicht
was ist mit
Code:
superdepp 1
gültig oder nicht?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.559 Beiträge
 
Delphi 7 Personal
 
#7

Re: eine Textdatei (.txt) in Dephi auswerten

  Alt 8. Jan 2010, 17:56
Zitat von Sir Rufo:

Du hast ja Beispiele für den Inhalt gegeben, es wäre aber ungemein hilfreich, wenn du für jede Zeile geschrieben hättest, ob die gültig ist, oder nicht
was ist mit
Code:
superdepp 1
gültig oder nicht?
Nach #1 sind alle Zeilen gültig die =1..=9,=10 enthalten also superdepp 1 wäre ungültig, gleiches gilt für superdepp=100. Man müßte also auch auf ein nachfolgendes Blank bzw. Stringende prüfen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

Re: eine Textdatei (.txt) in Dephi auswerten

  Alt 8. Jan 2010, 19:18
Zitat von p80286:
Nach #1 sind alle Zeilen gültig die =1..=9,=10 enthalten also superdepp 1 wäre ungültig, gleiches gilt für superdepp=100. Man müßte also auch auf ein nachfolgendes Blank bzw. Stringende prüfen.

Gruß
K-H
Nein, muss man nicht ...

Nach dem Normalisieren sieht die Datei wie folgt aus:
Code:
SUPERDEPP=1
SUPERDEPP=3
SUPERDEPP=5
SUPERDEPP=7
SUPERDEPP=9
SUPERDEPP=3
SUPERDEPP=7
SUPERDEPP=7 
SUPPENDEPP=11 
HUPERSEP=B
SUPERDEPP=A
SUPERDEP=C
SUPERDEPP=7
SUPERDEPP-9
SUPERDEPP3
SUPERDEPP7 
PUPERSEPP=7 
SUPERDEPP=3 
SUPERDEPP=5 
SUPERDEPP=7 
SUPERDEPP=9 
SUPERDEPP=7 
SUPERDEPP=9 
SUPERDEPP=9
Jetzt können wir alle Zeilen rausschmeissen wo nicht "SUPERDEPP=" enthalten ist
Delphi-Quellcode:
idx := 0;
while idx < MyList.Count do
  if Pos( 'SUPERDEPP=', MyList[ idx ] ) = 1 then
    inc( idx )
  else
    MyList.Delete( idx );
jetzt sieht das so aus
Code:
SUPERDEPP=1
SUPERDEPP=3
SUPERDEPP=5
SUPERDEPP=7
SUPERDEPP=9
SUPERDEPP=3
SUPERDEPP=7
SUPERDEPP=7 
SUPERDEPP=A
SUPERDEPP=7
SUPERDEPP=3 
SUPERDEPP=5 
SUPERDEPP=7 
SUPERDEPP=9 
SUPERDEPP=7 
SUPERDEPP=9 
SUPERDEPP=9
Jetzt wird nur noch geprüft, ob hinter "SUPERDEPP=" die gültigen Zahlen stehen und fertig ist die Laube
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#9

Re: eine Textdatei (.txt) in Dephi auswerten

  Alt 9. Jan 2010, 15:27
Hallo,

ich habe das Beispiel mal fertig gestellt.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  SMSList : TStringList;
  i : integer;
  iZeichen : integer;
  SMSBool : Boolean;
  temp : String;
begin
  SMSList := TStringList.Create;
  SMSList.LoadFromFile( 'C:\Users\jens.hartmann\Documents\Superdepp.txt' );

  SMSList.Text := UpperCase( SMSList.Text ); // Alles in GROSS
  SMSList.Text := StringReplace( SMSList.Text, ' ', '', [ rfReplaceAll ] ); // Leerzeichen raus
  SMSList.Text := StringReplace( SMSList.Text, '==', '=', [ rfReplaceAll ] ); // doppelte = Zeichen raus
  MEMO1.Text := SMSList.Text;
  MEMO1.Refresh;
  Sleep(2000); //nur zur Anzeigeverzögerung im MEMO

  i := 0;
    while i < SMSList.Count do
      begin
        if Pos( 'SUPERDEPP=', SMSList[ i ] ) = 1 then
          inc( i )
        else
          SMSList.Delete( i );
      end;
  MEMO1.Text := SMSList.Text;
  MEMO1.Refresh;
  Sleep(2000); //nur zur Anzeigeverzögerung im MEMO


   i := 0;
    while i < SMSList.Count do
      begin
        temp := SMSList[i];
        for iZeichen := 1 to 9 do
          begin
            SMSBool := false;
            if pos (IntToStr(iZeichen), temp) = 11 then
              SMSBool := true;
            if SMSBool then
              Break;
          end;
        if not SMSBool then
          SMSList.Delete(i);
        inc(i)
      end;
  MEMO1.Text := SMSList.Text;
end;
Kann man eigenlich irgendwie folgendes auch mit "POS" machen...

Delphi-Quellcode:
  if pos(['0'..'9'],SMSList[i]) = 11 then
  //oder
  if pos(IntToStr([0..9]),SMSList[i]) = 11 then
Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#10

Re: eine Textdatei (.txt) in Dephi auswerten

  Alt 9. Jan 2010, 16:48
Es gibt mehrere Möglichkeiten, zu prüfen, ob die Zahl nach dem "=" eine richtige ist:

a) mit Copy() alle vor dem "=" wegschneiden und dann prüfen. Ich denk mal, dass es bei 10 Möglichkeiten noch verträglich ist, alle einzeln per If-Strukrur zu überprüfen. Ansonsten ne Schleife und ne Abbruchbedingung und dann musst du nur von 0 bis 10 zählen und beim richtigen Eintrag aus der schleife rausspringen. Wenn die Schleife am Ende ankommt, dann ist der Eintrag ungültig.

b) Durch setzen von SMSLis.NameValueSperator := "=" kommst du mit SMSList.Values[idx] an die einzelnen Stellen nach dem "=" und kannst dann prüfen wie oben beschrieben.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf