Autor Beitrag
mwi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 53

derzeit, win95 (usb version) win xp (prof) und suse 9.2
delphi 4 und 5 (prof)
BeitragVerfasst: 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 57



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: Mi 01.06.05 14:08 
Titel: Re: aussortieren von unbekannten inhalten
probier mal so:

ausblenden 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;  // #13#10 = Zeilenumbruch
        break;   // SChleife verlassen
      end else 
        b:=b+zeile2[i];
    end;
  end;




MrSaint


// EDIT: das wichtige [i] vergessen :oops:

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
mwi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 53

derzeit, win95 (usb version) win xp (prof) und suse 9.2
delphi 4 und 5 (prof)
BeitragVerfasst: Mi 01.06.05 14:12 
so könnte das dokument aussehen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
  Including c://windows/blabla/....

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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: 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:

ausblenden 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;  // #13#10 = Zeilenumbruch
        break;   // SChleife verlassen
      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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 53

derzeit, win95 (usb version) win xp (prof) und suse 9.2
delphi 4 und 5 (prof)
BeitragVerfasst: 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
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 53

derzeit, win95 (usb version) win xp (prof) und suse 9.2
delphi 4 und 5 (prof)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: Mi 01.06.05 14:40 
sorry, das hab ich jetzt übersehen :oops:

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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 53

derzeit, win95 (usb version) win xp (prof) und suse 9.2
delphi 4 und 5 (prof)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Mi 01.06.05 18:15 
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 53

derzeit, win95 (usb version) win xp (prof) und suse 9.2
delphi 4 und 5 (prof)
BeitragVerfasst: 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 :autsch:
in dem sinne, sorry an alle, die ich mit meiner unachtsamkeit mal wieder genervt hab...