| Autor |
Beitrag |
mwi
      
Beiträge: 53
derzeit, win95 (usb version) win xp (prof) und suse 9.2
delphi 4 und 5 (prof)
|
Verfasst: Mi 01.06.05 13:59
geplant ist folgendes:
ich lese einen text zeilenweise aus (die einzelne zeile ist dann unter der variable zeile2 zu finen)
nun möchte ich eine erste vorsortierung machen. alle zeilen die mit Including oder --- anfangen sollen rausgefiltert werden. Dazu hab ich mir folgenden code überlegt:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| for i:=1 to length(zeile2) do begin if zeile2[i]<>' ' then begin if (b='Including') or (b='---') then c:=c+zeile2 else b:=b+zeile2; |
die idee war, dass ich die einzelnen zeichen so lange was in die stringvariable b reinschreiben lasse, bis meine gesuchten wörter, wenn sie denn vorhanden sind entstehen.
das heist, ich bräuchte später einfach nur darauf überprüfen, ob c leer ist.
so weit zur grauen theorie.
doch leider wird c NIE belegt, auch wenn x-tausend mal am anfang Including da steht...
weis jemand wo mein fehler liegt???
|
|
deccer
      
Beiträge: 57
|
Verfasst: Mi 01.06.05 14:02
ich versteh nur bahnhof
mach doch mal ne auflistung von deiner datei die du da am einlesen bist, und jaw, sag nommel genau was du ausgelesen haben willst
_________________ I <3 PeRLe
|
|
MrSaint
      
Beiträge: 1033
Erhaltene Danke: 1
WinXP Pro SP2
Delphi 6 Prof.
|
Verfasst: Mi 01.06.05 14:08
Titel: Re: aussortieren von unbekannten inhalten
probier mal so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| b := ''; for i:=1 to length(zeile2) do begin if zeile2[i]<>' ' then begin if (b='Including') or (b='---') then begin c:=c + zeile2 + #13#10; break; end else b:=b+zeile2[i]; end; end; |
MrSaint
// EDIT: das wichtige [i] vergessen 
_________________ "people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
|
|
mwi 
      
Beiträge: 53
derzeit, win95 (usb version) win xp (prof) und suse 9.2
delphi 4 und 5 (prof)
|
Verfasst: Mi 01.06.05 14:12
so könnte das dokument aussehen:
Delphi-Quelltext 1: 2: 3: 4: 5:
| Including c: mwi ist grotten schlecht
--- das stimt sogar |
jetzt sollen diese beiden zeilen wo einmal 'Including' und einmal '---' am anfang steht gelöscht werden
der ganze spaß befindet sich ja in einem dynamischen array (ups, ich glaub das hab ich vergessen zu erwähnen...).
|
|
MrSaint
      
Beiträge: 1033
Erhaltene Danke: 1
WinXP Pro SP2
Delphi 6 Prof.
|
Verfasst: Mi 01.06.05 14:15
Wenn du noch Leerezeichen in der Zeile vor den Schlüsselwörtern "---" und "Including" hast, bau doch das noch ein:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| b := ''; for i:=1 to length(zeile2) do begin if zeile2[i]<>' ' then begin if (b='Including') or (b='---') then begin c:=c + zeile2 + #13#10; break; end else if zeile2[i] <> ' ' then b:=b+zeile2[i]; end; end; |
_________________ "people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
|
|
mwi 
      
Beiträge: 53
derzeit, win95 (usb version) win xp (prof) und suse 9.2
delphi 4 und 5 (prof)
|
Verfasst: Mi 01.06.05 14:19
hmm, da ist ja das nächste problem, ich weis auch nicht wieviel leerzeichen am zeilenanfang stehen, darum hab ich diese abfrage mit eingebaut
Delphi-Quelltext 1:
| if zeile2[i]<>' ' then |
damit sollte ich das problem mit den leerzeichen nicht mehr haben. eigentlich...
habs jetzt nochmal ausprobiert. an den leerzeichen liegts nicht.
|
|
MrSaint
      
Beiträge: 1033
Erhaltene Danke: 1
WinXP Pro SP2
Delphi 6 Prof.
|
Verfasst: Mi 01.06.05 14:21
sag mal, liest du eiegntlich was ich schreib? genau das ahb ich doch auch da stehn!
_________________ "people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
|
|
mwi 
      
Beiträge: 53
derzeit, win95 (usb version) win xp (prof) und suse 9.2
delphi 4 und 5 (prof)
|
Verfasst: Mi 01.06.05 14:35
sorry hab ich übersehen, tut mir leid.
hab des jetzt mal so ausprobiert, wie du das geschrieben hast, ndert aber nichts an der tatsache.
aber die leerzeiche hatte ich doch sowieso schon in zeile 4 aussortiert?
|
|
MrSaint
      
Beiträge: 1033
Erhaltene Danke: 1
WinXP Pro SP2
Delphi 6 Prof.
|
Verfasst: Mi 01.06.05 14:40
sorry, das hab ich jetzt übersehen
hast du die Zeile 12 so wie bei meinem letzten geposteten ode? auf das "[i]" kommts an! Ansonsten Debug doch mal mit nem Haltepunkt rein und überprüf mal was in b so drinsteht...
MrSaint
_________________ "people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
|
|
mwi 
      
Beiträge: 53
derzeit, win95 (usb version) win xp (prof) und suse 9.2
delphi 4 und 5 (prof)
|
Verfasst: Mi 01.06.05 14:44
das 'i' hab ich so drin, wie du es vorgeschlagen hast...
ähh, wie debug ich jetzt einen haltepunkt???
da aber c immer leer bleibt, habe ich die befürchtung, dass auf b immer die komplette zeile steht.
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mi 01.06.05 18:15
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| Var aStrings : TStringlist; aLine : String;
Begin aStrings := TStringlist.Create; Try aStrings.LoadFromFile('Foo.Txt'); i := 0; While i < aStrings.Count do begin aLine := Trim (aStrings[i]; If Pos ('Including', aLine) = 1 Then aStrings.Delete(i) Else If Pos('---',aLine) = 1 then aStrings.Delete(i) Else Inc (i); End; memo1.lines.Assign (aStrings); Finally aStrings.Free; End End; |
Zuerst die Datei in eine Liste einlesen. Das ist zwar suboptimal, aber bequem. Dann wird für jede Zeile geprüft, ob sie mit 'Including' oder '---' anfängt. Leerzeichen am Anfang und am Ende werden durch 'Trim' weggeschnitten. Wenn die Zeile sowas enthält, dann wird sie aus der Stringliste gelöscht: I wird dann natürlich nicht erhöht, weil aStrings[i] automatisch auf die nächste Zeile zeigt.
|
|
mwi 
      
Beiträge: 53
derzeit, win95 (usb version) win xp (prof) und suse 9.2
delphi 4 und 5 (prof)
|
Verfasst: Do 02.06.05 07:35
So ich habs jetzt (und es war mal wieder nur ein dummer flüchtigkeitsfehler...)
hab tatsächlich das [i] vergessen, wenns darum ging b oder c zu beschreiben
in dem sinne, sorry an alle, die ich mit meiner unachtsamkeit mal wieder genervt hab...
|
|