Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#12

Re: Text aus Textdatei in TEDIT auslesen und wieder speiche

  Alt 3. Jun 2006, 23:15
Hallo Mirco,

wenn die Zeilen deutlich länger werden, dann wird es so oder so problematisch eine komfortable Benutzerschnittstelle zu gestalten. Ich würde beim VLE bleiben und nur bei Bedarf ein anderes Control (Memo?) einblenden:

Delphi-Quellcode:
procedure TDemoForm.LoadFile(fn: TFileName);
const
  S_DEF = 'define(';
var
  i: Integer;
  line, sName, sText: String;
  pc: PChar;
begin
  with TStringList.Create do
  begin
    LoadFromFile(fn);
    VLE.Strings.Clear;
    for i := 0 to Pred(Count) do
    begin
      line := Trim(Strings[i]);
      if AnsiStartsText(S_DEF, line) then
      begin
        pc := PChar(line);
        Inc(pc, Length(S_DEF));
        sName := AnsiExtractQuotedStr(pc, '''');
        Inc(pc, 2);
        sText := AnsiExtractQuotedStr(pc, '''');
        VLE.Strings.AddObject(sName + '=' + sText, Pointer(i));
      end;
    end;
    Free;
  end;
end;

procedure TDemoForm.SaveFile(fn: TFileName);
const
  S_FMT = 'define(%s, %s);';
var
  i, iLine: Integer;
  sName, sText: String;
begin
  with TStringList.Create do
  begin
    LoadFromFile(fn);
    for i := 1 to VLE.Strings.Count do
    begin
      sName := VLE.Keys[i];
      sText := VLE.Values[sName];
      iLine := Integer(VLE.Strings.Objects[Pred(i)]);
      Delete(iLine);
      Insert(iLine, Format(S_FMT, [AnsiQuotedStr(sName, ''''), AnsiQuotedStr(sText, '''')]));
    end;
    SaveToFile(fn);
    Free;
  end;
end;
Jetzt muss ich aber wirklich ins Bettchen.

marabu
  Mit Zitat antworten Zitat