Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Memo1.Lines[0] prüfen! (https://www.delphipraxis.net/185224-memo1-lines%5B0%5D-pruefen.html)

strom 23. Mai 2015 10:53

Memo1.Lines[0] prüfen!
 
wenn im Memo, in der ersten Zeile eine Zahl steht,
soll eine das Memo kopiert werden!

Wie könnte so was aussehen?

Delphi-Quellcode:
begin
 if Memo3.Lines[0] =( Key in ['0'..'9', #8] ) then /?????????????????????
  begin
   Memo5.text := Memo3.Lines[0];
  end;

AlexII 23. Mai 2015 11:00

AW: Memo1.Lines[0] prüfen!
 
Pos
Will man prüfen, ob ein Teilstring in einem String vorkommt bzw. will man die Stelle
ermitteln, an der dieser Teilstring vorkommt, so benutzt man die Funktion Pos.

function Pos(SubStr: string; S: string): Integer;
SubStr: der String, nach dem gesucht werden soll
S: der String, in dem gesucht werden soll
Rückgabewert: die Position, an der der Teilstring gefunden wurde; ansonsten 0
So kann man in einem String suchen:

Delphi-Quellcode:
s := 'Test = 5';
Position := Pos('=', s);
if Position <> 0 then
  ShowMessage('gefunden an Position: ' + IntToStr(Position))
else
  ShowMessage('nicht im string vorhanden');
Die Beschreibung der Funktion Pos in der deutschen Hilfe von Delphi ist fehlerhaft.
Entgegen der dortigen Aussage unterscheidet die Funktion sehr wohl zwischen Groß- und
Kleinschreibung.
C by Christian Rehn

Popov 23. Mai 2015 11:11

AW: Memo1.Lines[0] prüfen!
 
@strom

1. Solche Fragen kann man sich oft selbst beantworten wenn man sich mit der Komponente beschäftigt. Einfach in der OH alle Eigenschaften und Methoden durchlesen. Eigentlich bin ich der Letzte der auf die OH verweist, denn schließlich ist ein Forum dazu da Fragen zu stellen, aber TStrings & Co. gehören zu den Delphi-Grundlagen.

2. Wenn man etwas wissen will und wünscht, dass sich jemand Mühe mit einer Antwort gibt, dann sollte man sich mehr also nur 5 Sekunden mit der Frage auseinandersetzen. Vielleicht sollte man zuerst die Vorschau wählen, sich dann alles durchlesen und sich fragen - werde ich und meine Frage auch verstanden? Ich wette mit dir um ein Puddingteilchen, dass du diese Frage einfach so ohne Überlegung runter geschrieben hast. Und nun muss sich jeder damit auseinandersetzen und fragen was du eigentlich willst?

3. Ich würde dir gerne helfen, weiß aber nicht was du willst. AlexII hat evtl. eine Glaskugel in der er es sieht.

Popov 23. Mai 2015 11:36

AW: Memo1.Lines[0] prüfen!
 
Ich weiß zwar immer noch nicht was die Frage ist, aber evtl. geht es um Zahlen. Hier ein Beispiel wie man herausfindet ob ein String eine Interger Zahl oder gar eine Reelle Zahl enthält.
Delphi-Quellcode:
var
  sZahl: string;
  iResult: Integer;
  fResult: Double;
begin
  sZahl := '42';

  //sZahl := '12,3456';

  //Prüfen ob Integer
  if TryStrToInt(sZahl, iResult) then
    ShowMessage(sZahl + ' ist eine Integer-Zahl')
  else
    ShowMessage(sZahl + ' ist keine Integer-Zahl');

  //Prüfen ob Zahl mit Nachkommastellen
  if TryStrToFloat(sZahl, fResult) then
    ShowMessage(sZahl + ' ist eine Reelle-Zahl')
  else
    ShowMessage(sZahl + ' ist keine Reelle-Zahl');
end;
Womit das in dein Beispiel so aussehen könnte:
Delphi-Quellcode:
var
  ...
  i: Integer;
  ...
begin
  ...
  if TryStrToInt(Memo3.Lines[0], i) then
  begin
    Memo5.text := Memo3.Lines[0];
  end;

Daniel 23. Mai 2015 12:40

AW: Memo1.Lines[0] prüfen!
 
Das sollte ihm helfen.
Wenn er dann noch mittels "Memo1.Lines.Count" prüft, ob es überhaupt eine erste Zeile (mit Index 0) gibt, dann wird die Lösung wohl rund.

p80286 23. Mai 2015 12:41

AW: Memo1.Lines[0] prüfen!
 
Delphi-Quellcode:
function IstZifferinString(const s:string):boolean;
var
  i : integer,
begin
  result:=false;
  if length(s)>0 then
    for i:=1 to length(s) do
      if s[i] in ['0'..'9'] then result:=true;
end;
Könnte man auch mit repeat until oder while lösen wenn die Ziffer relativ weit vorne steht. Das spart ein paar Takte.

Gruß
K-H

Luckie 23. Mai 2015 12:41

AW: Memo1.Lines[0] prüfen!
 
Zitat:

Zitat von Daniel (Beitrag 1302755)
Das sollte ihm helfen.
Wenn er dann noch mittels "Memo1.Lines.Count" prüft, ob es überhaupt eine erste Zeile (mit Index 0) gibt, dann wird die Lösung wohl rund.

No risk, no fun. :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:55 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