AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Memo.Text Schleife

Ein Thema von Alterauge · begonnen am 22. Jul 2012 · letzter Beitrag vom 24. Jul 2012
Antwort Antwort
Seite 1 von 2  1 2      
Alterauge

Registriert seit: 4. Mär 2011
306 Beiträge
 
Delphi 2010 Professional
 
#1

Memo.Text Schleife

  Alt 22. Jul 2012, 11:39
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;
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Memo.Text Schleife

  Alt 22. Jul 2012, 11:47
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;
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)

Geändert von lbccaleb (22. Jul 2012 um 11:51 Uhr)
  Mit Zitat antworten Zitat
Alterauge

Registriert seit: 4. Mär 2011
306 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Memo.Text Schleife

  Alt 22. Jul 2012, 11:58
Alles klar ! geht soweit!

Danke!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Memo.Text Schleife

  Alt 22. Jul 2012, 12:33
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 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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (22. Jul 2012 um 12:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Memo.Text Schleife

  Alt 22. Jul 2012, 14:08
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

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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Memo.Text Schleife

  Alt 22. Jul 2012, 20:44
... 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"?
  Mit Zitat antworten Zitat
Alterauge

Registriert seit: 4. Mär 2011
306 Beiträge
 
Delphi 2010 Professional
 
#7

AW: Memo.Text Schleife

  Alt 23. Jul 2012, 20:05
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;
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: Memo.Text Schleife

  Alt 23. Jul 2012, 20:38
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...
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#9

AW: Memo.Text Schleife

  Alt 24. Jul 2012, 10:58
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Memo.Text Schleife

  Alt 24. Jul 2012, 11:12
Vielleicht sollte man, solange der TE nicht beriet ist senen Threadtitel zu ändern, nicht mehr antworten.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:39 Uhr.
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