Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Memo.Text Schleife (https://www.delphipraxis.net/169468-memo-text-schleife.html)

Alterauge 22. Jul 2012 10:39

Memo.Text Schleife
 
Hallo,

ich möchte hoffen, dass der Titel so in Ordnung ist?

Also zum Thema!
Wie ihr im Quelltext lesen könnt, wird ein Teil aus dem Memofeld als
Dateiname zum speichern benutzt. Und zwar der Inhalt der nach ** kommt.
Dieses geht auch soweit ganz gut!

Jetzt zum Problem: Sind keine ** vorhanden, wird der ganze Inhalt vom Memofeld als
Dateiname benutzt. Das ist schlecht!
Würde gerne, wenn die ** fehlen einen Fixtext benutzen!

Delphi-Quellcode:
procedure TForm1.Timer3Timer(Sender: TObject);
 var
  s, d: String;
begin
  s := Memo1.Lines.Text;
  d := '**';
  Delete(s, 1, Pos(d, s) - 1 + Length(d));
  while Pos(#10, s) > 0 do Delete(s, Pos(#10, s), 1);
  while Pos(#13, s) > 0 do Delete(s, Pos(#13, s), 1);
  s := Trim(s);
 Memo1.Lines.SaveToFile(FormatDateTime('yyyy-mm-dd_hh-nn-ss__',now)+(s) + '.txt');
      end;
   end;
end;

lbccaleb 22. Jul 2012 10:47

AW: Memo.Text Schleife
 
Delphi-Quellcode:
if Pos(d, s) < 1 then begin;
  //fixtext
  exit;
end;
Edit:
in der procedure am start einbauen:
Delphi-Quellcode:
procedure TForm1.Timer3Timer(Sender: TObject);
 var
  s, d: String;
begin
  s := Memo1.Lines.Text;
  d := '**';
  if Pos(d, s) < 1 then begin;
    //fixtext, selbst weiter bearbeiten
    exit;
  end;
  Delete(s, 1, Pos(d, s) - 1 + Length(d));
  while Pos(#10, s) > 0 do Delete(s, Pos(#10, s), 1);
  while Pos(#13, s) > 0 do Delete(s, Pos(#13, s), 1);
  s := Trim(s);
 Memo1.Lines.SaveToFile(FormatDateTime('yyyy-mm-dd_hh-nn-ss__',now)+(s) + '.txt');
      end;
   end;
end;

Alterauge 22. Jul 2012 10:58

AW: Memo.Text Schleife
 
Alles klar ! :-D geht soweit!

Danke!

p80286 22. Jul 2012 11:33

AW: Memo.Text Schleife
 
Zitat:

Zitat von Alterauge (Beitrag 1175547)
Jetzt zum Problem: Sind keine ** vorhanden, wird der ganze Inhalt vom Memofeld als
Dateiname benutzt. Das ist schlecht!
Würde gerne, wenn die ** fehlen einen Fixtext benutzen!

Delphi-Quellcode:
procedure TForm1.Timer3Timer(Sender: TObject);
 var
  s, d: String;
begin
  s := Memo1.Lines.Text;
  d := '**';
  Delete(s, 1, Pos(d, s) - 1 + Length(d));
  while Pos(#10, s) > 0 do Delete(s, Pos(#10, s), 1);
  while Pos(#13, s) > 0 do Delete(s, Pos(#13, s), 1);
  s := Trim(s);
 Memo1.Lines.SaveToFile(FormatDateTime('yyyy-mm-dd_hh-nn-ss__',now)+(s) + '.txt');
      end;
   end;
end;

Ich war, was Deine Lernfortschritte angeht, wohl etwas zu optimistisch.
Was soll diese Anhäufung von
Delphi-Quellcode:
end;
?

Kommt demnächst noch eine Frage weil Du das Speichern eines Memos durch einen Timer steuerst?

Die Routine tut genau das was sie soll
Code:
Würde gerne eine kleine Information aus dem Memofeld,
mit an den Dateinamen hängen.

Hier ein Beispiel:
So würde der Inhalt im Memofeld aussehen:

testeingabe1*testeingabe2*testeingabe3[COLOR="red"]**1245[/COLOR]

Jetzt würde ich gerne immer die Zahl nach dem Sonderzeichen ** mit übernehmen!
Vielleicht solltest Du Dir ein paar Gedanken darüber wenn nicht alles so ist wie Du es gerne hättest, z.B. wenn dort nur ein * vorhanden ist oder nach ** keine weiteren Daten vorhanden sind.
Und was verstehst du unter "Fixtext" und was willst Du mit Ihm erreichen?

Gruß
K-H

Edith:
Memo.Text Schleife ... Bahnhof, Kofferklauen

Sir Rufo 22. Jul 2012 13:08

AW: Memo.Text Schleife
 
Zitat:

Zitat von Alterauge (Beitrag 1175547)
Hallo,

ich möchte hoffen, dass der Titel so in Ordnung ist?

Absolut ... wenn du Probleme hast um den Text in einem Memofeld eine Schleife zu binden :roll:

Wie man aus deinem Quelltext entnehmen kann, hast du keine Probleme den Text aus einem TMemo auszulesen.

Vielmehr geht es darum aus einem String eine Zeichenkette zu isolieren.

Jetzt kannst du dir die Frage nach dem Titel (hoffentlich) auch selber beantworten

sx2008 22. Jul 2012 19:44

AW: Memo.Text Schleife
 
Zitat:

Zitat von Alterauge (Beitrag 1175547)
... wird ein Teil aus dem Memofeld als
Dateiname zum speichern benutzt. Und zwar der Inhalt der nach ** kommt.

Sorry, aber ist das nicht schon eine ziemlich kranke Vorgehensweise nach dem Motto "Sie müssen nur den Nippel durch die Lasche ziehen"?

Alterauge 23. Jul 2012 19:05

AW: Memo.Text Schleife
 
Hallo,
habe noch eine Frage zu:

Delphi-Quellcode:
 
d := '**';
Möchte gerne die letzten 10 Zeichen mit in den Dateinamen nehmen!
Und nich was nach ** kommt!

Hat einer eine Idee?


Hier der ganze Quelltext!



Delphi-Quellcode:
procedure TForm1.Timer3Timer(Sender: TObject);
 var
  s, d: String;
begin
    Memo3.Lines:=Memo1.Lines;
    Timer4.Enabled:=false;
   Progressbar1.Position := Progressbar1.Position -1;
 if Progressbar1.Position = 0 then
    begin
  s := Memo1.Lines.Text;
  d := '**';
  while Pos(#10, s) > 0 do Delete(s, Pos(#10, s), 1);
  while Pos(#13, s) > 0 do Delete(s, Pos(#13, s), 1);
  if Pos(d, s) < 1 then begin
     Memo1.Lines.SaveToFile(FormatDateTime('yyyy-mm-dd_hh-nn-ss__',now)+('EOT')+ '.txt');
    Memo1.Clear;
    FileListBox1.Update;
    Button4.Enabled:=false;
    Timer3.Enabled:=false;
     Timer1.Enabled:=true;
     sndPlaySound( nil , 0);
    exit;
    end;
  Delete(s, 1, Pos(d, s) - 1 + Length(d));
  while Pos(#10, s) > 0 do Delete(s, Pos(#10, s), 1);
  while Pos(#13, s) > 0 do Delete(s, Pos(#13, s), 1);
  s := Trim(s);
 Memo1.Lines.SaveToFile(FormatDateTime('yyyy-mm-dd_hh-nn-ss__',now)+(s) + '.txt');
     Filelistbox1.Update;
    Memo1.Clear;
    Button4.Enabled:=false;
    Timer3.Enabled:=false;
     Timer1.Enabled:=true;
     sndPlaySound( nil , 0);
   end;
 end;

lbccaleb 23. Jul 2012 19:38

AW: Memo.Text Schleife
 
Delphi-Quellcode:
var
i: integer;
letztenzeichen: string;

if length(memo1.text) < 11 then exit;
letztenzeichen := '';
for i := length(memo1.text)-11 to length(memo1.text do begin;
  letztenzeichen := letztenzeichen + memo1.text[i];
end;

//weiter....
Könntest das ganze natürlich auch mit copy() machen...

DeddyH 24. Jul 2012 09:58

AW: Memo.Text Schleife
 
Delphi-Quellcode:
function LastChars(const s: string; CountChars: Cardinal): string;
begin
  if CountChars >= Length(s) then
    Result := s
  else
    Result := Copy(s, Length(s) - Pred(CountChars), MAXINT);
end;

mkinzler 24. Jul 2012 10:12

AW: Memo.Text Schleife
 
Vielleicht sollte man, solange der TE nicht beriet ist senen Threadtitel zu ändern, nicht mehr antworten. :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:08 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz