Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TForm1.Button1Click(Sender: TObject); var ms: TMemoryStream; p: PChar; begin ms := TMemoryStream.Create; try ms.LoadFromFile('d:\Dokumente\Träume vom 2004-02-25.txt'); p := ms.Memory; while p^ <> #0 do begin ShowMessage(p^); Inc(p); end; finally FreeAndNil(ms); end; end; |
Gibt dir jedes Zeichen einzeln in dem Dialog aus. Nachteil: Du kannst keine AnsiStrings verwenden, da in AnsiStrings auch das #0 Zeichen vorkommen kann, bei PChar's ist es das Stringende-Zeichen.
Erweiterung:
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: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50:
| procedure TForm1.Button1Click(Sender: TObject); var ms: TMemoryStream; p, q, r: PChar; i: Integer; s: string; begin i := 0; ms := TMemoryStream.Create; try ms.LoadFromFile('d:\Dokumente\Träume vom 2004-02-25.txt'); p := ms.Memory; q := p; r := p; while p^ <> #0 do begin if p^ = 'd' then begin Inc(q, 3); Dec(r, 1); if (q^ = #32) and (r^ = #32) then begin SetString(s, p, q - r - 1); if (s = 'der') or (s = 'das') or (s = 'die') then begin ListBox1.Items.Add(s); Inc(i); end; end; Dec(q, 3); Inc(r); end; Inc(p); Inc(q); Inc(r); end; finally FreeAndNil(ms); end; ShowMessage(IntToStr(i)); end; |
Zählt dir alle bestimmten Artikel (der, die, das) in einem Text.
Ich weiß nicht, was du vor hast, aber es wäre zu überlegen, ob du dich nicht mal über Reguläreausdrücke schlau machst.