Enthält das Editfeld buchstaben oder Zahlen???

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Tanketorion
Beiträge: 25
Registriert: Mo 7. Apr 2014, 20:55

Enthält das Editfeld buchstaben oder Zahlen???

Beitrag von Tanketorion »

Hi Leute

da die suchfunktion mir kein passendes ergebnis gebracht hat frage ich nun selber

ich bin dabei ein programm zum erstellen von verzeichnissen zu schreiben.
normalerweise wird der name des verzeichnisses in einem edit-feld angegeben, aber nun möchte ich das programm mit einem Memo zu erweitern.
dieses Memo wird bereits in einem .txt dokument gespeichert um es immer auf dem neuesten stand zu halten.

wenn nun eine zahl (zwischen 1 und 20) in das editfeld eingegeben wird,soll das verzeichniss den Namen haben, der im memo in der entsprechnden zeile gespeichert ist.
wie frage ich nun, ob das editfeld eine zahl oder ein str enthält??
und gibt es auch eine funktion die es schafft einen ordner zu erstellen auch wenn dieser dann z.b. test12 heißt, ohne das die zahl 12 durch den str aus dem memo erstetzt wird??


Danke schon mal


Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Enthält das Editfeld buchstaben oder Zahlen???

Beitrag von Michl »

Könntest auch sowas wie

Code: Alles auswählen

var
  i: Integer;
begin
  if TryStrToInt(Edit1.Text, i) then                        // Testen, ob Edit1 eine Ganzzahl enthält
    if (i <= Memo1.Lines.Count) and (i > 0) then            // Schauen, ob diese Zahl einer Memo-Zeile entspricht
      ShowMessage('Memozeile gewählt: '+Memo1.Lines[i - 1])
    else
      ShowMessage('Ungültige Memozeile!')
  else
    ShowMessage('Keine Ganzzahl: '+Edit1.Text);
end;
 
machen?!

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Enthält das Editfeld buchstaben oder Zahlen???

Beitrag von mschnell »

Tanketorion hat geschrieben:wie frage ich nun, ob das editfeld eine zahl ... enthält??
Nichts als eine Zahl oder unter anderem eine Zahl ?

Was für eine Zahl ? (Ganzzahl, Dezimal-Bruch mit Punkt und/oder Komma, Hex-Zahl mit "0x" oder "$", Oktalzahl, Binärzahl, Bruch wie "1 1/3", komplexe Zahl, Römische Zahl, ... ist "pi" eine Zahl ? )

-Michael

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Enthält das Editfeld buchstaben oder Zahlen???

Beitrag von Michl »

mschnell hat geschrieben:... ist "pi" eine Zahl ?
...ja, und gibt es überhaupt Zahlen?! :D

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Tanketorion
Beiträge: 25
Registriert: Mo 7. Apr 2014, 20:55

Re: Enthält das Editfeld buchstaben oder Zahlen???

Beitrag von Tanketorion »

Bisher schon mal danke für eure antworten

ich kann heute leider nicht versuchen ob es funktioniert, aber das werde ich in den nächsten tage machen...

zur frage von mschnell:

es handelt sich um eine ganzzahl die gesucht ist und diese zahl soll nur durch den eintrag aus der entsprechenden memozeile ersetzt werden, wenn davor oder dahinter kein text steht

also
15 ->Memozeile 15(-1) in das editfeld übertragen
Hallo15 Kein Übertrag
15Hallo Kein Übertrag

Soner
Beiträge: 725
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Enthält das Editfeld buchstaben oder Zahlen???

Beitrag von Soner »

Wenn du denkst dass eine Zahl nicht vorkommen kann, dann kannst du einfach das verwenden:

Code: Alles auswählen

 
var i:integer;
begin
   i:=StrToIntDef( EditXYZ.Text, -2014);  // Hier ist -2014 die Zahl, die Text nicht vorkommen darf, sonst wird diese Zahl übergangen.
   if i<>-2014 then MemoXYZ.Lines.Add( 'Hallo'+ EditXYZ.Text );
end;
 
Wenn du alle Zahlen verwenden willst , dann kannst du das verwenden:

Code: Alles auswählen

 
function IstEsZahl(AText:string):Boolean;
begin
  Result:=true;
  try
    StrToInt(AText);
  except
    Result:=false;
  end;
end;
 
var i:integer;
begin
   if IstEsZahl(EditXYZ.Text) then MemoXYZ.Lines.Add( 'Hallo'+ EditXYZ.Text );
end;
 

Antworten