Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Frage zum Substring in Delphi (https://www.delphipraxis.net/177918-frage-zum-substring-delphi.html)

Oernie1984 5. Dez 2013 14:13

Delphi-Version: 7

Frage zum Substring in Delphi
 
Hallo zusammen,

ich habe eine Frage zu den Substrings...

Ich möchte mir ein kleines Programm schreiben mit dem ich die 9. Ziffer(Prüfziffer) einer 8 stelligen Zahl ausrechnen kann. Ich würde quasi eine 8 Stellige Zahl in ein Editfeld eintragen und daraufhin soll mir die eingetragene Zahl dann inkl. fehlender 9 Prüfziffer ausgegeben werden.

Ich habe für den Anfang folgendes geschrieben:
Delphi-Quellcode:
unit Pruefziffer;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Schliessen: TButton;
    Edit1: TEdit;
    Berrechnung: TButton;
    Label1: TLabel;
    procedure ButtonSchliessenClick(Sender:Tobject);
    procedure ButtonBerrechnungClick(Sender:TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  PNR: String;
  NR1: String;

implementation

{$R *.dfm}

procedure TForm1.ButtonSchliessenClick(Sender: TObject);
begin
close;
end;

procedure TForm1.ButtonBerrechnungClick(Sender:TObject);
var
PNR, NR1: String;
begin
PNR:= edit1.text;
NR1:= PNR.SubString(1,1);
Label1.Caption := NR1;
end;

end.
Delphi gibt mir nun immer die Meldung zurück
[Fehler] Pruefziffer.pas(42): Record, Objekt oder Klassentyp erforderlich

Es handelt sich um diese Zeile
NR1:= PNR.SubString(1,1);

Könnt ihr mir sagen was ich falsch mache? :cry:

Grüße
Oernie

Lemmy 5. Dez 2013 14:20

AW: Frage zum Substring in Delphi
 
Zitat:

Zitat von Oernie1984 (Beitrag 1238643)
Könnt ihr mir sagen was ich falsch mache? :cry:

quasi alles ;-)

Zitat:

Zitat von Oernie1984 (Beitrag 1238643)
Es handelt sich um diese Zeile
NR1:= PNR.SubString(1,1);

sag mal kurz, was Du hier erwartest? Soll in Nr1 die erste Ziffer stehen?

Grüße

Mikkey 5. Dez 2013 14:21

AW: Frage zum Substring in Delphi
 
PNR ist ein String und keine Klasse, Du kannst das Zeichen an der Stelle k mit
Delphi-Quellcode:
PNR[k]
abrufen.

DeddyH 5. Dez 2013 14:21

AW: Frage zum Substring in Delphi
 
String ist keine Klasse und verfügt daher nicht über eine Methode SubString. Du kannst entweder die Copy()-Funktion verwenden oder direkt indiziert auf einzelne Zeichen des Strings zugreifen.
Delphi-Quellcode:
var
 NR1: String;
...
NR1 := Copy(PNR, 1, 1);

(* alternativ *)
var
 NR1: Char;
...
NR1 := PNR[1];

joachimd 5. Dez 2013 14:22

AW: Frage zum Substring in Delphi
 
ein String ist kein Objekt, hat also keine Methoden. Du willst die Funktion Copy verwenden: http://www.delphi-treff.de/tutorials...en-funktionen/

baumina 5. Dez 2013 14:22

AW: Frage zum Substring in Delphi
 
Um eine einzelne Stelle eines Strings zu erhalten, kannst Du Label1.Caption := PNR[1]; (erste Stelle) verwenden.

DeddyH 5. Dez 2013 14:23

AW: Frage zum Substring in Delphi
 
4 (eigentlich ja 5, gell TBx? ;)) Antworten innerhalb von 2 Minuten. Ist das neuer Rekord?

[edit] Und noch eine mehr *g* [/edit]

Oernie1984 5. Dez 2013 14:30

AW: Frage zum Substring in Delphi
 
Wow ihr seid aber schnell. Vielen Dank für die wirklich "sehr" schnelle Hilfe.

Ich versuche eure Vorschläge direkt mal umzusetzen. :thumb:

@Lemmy ja genau ich möchte an dieser Stelle die 1. Ziffer der Zahl ausgeben.

Danke
Örnie

Perlsau 5. Dez 2013 14:33

AW: Frage zum Substring in Delphi
 
Was hat die Funktion SubString mit dem Ermitteln einer Prüfziffer zu tun? Substring ist doch identisch mit Copy, soweit ich das beurteilen kann?

Zitat:

Zitat von Oernie1984 (Beitrag 1238651)
@Lemmy ja genau ich möchte an dieser Stelle die 1. Ziffer der Zahl ausgeben.

Delphi-Quellcode:
Label1.Caption := Copy(MeinString,1,1);
oder
Delphi-Quellcode:
Label1.Caption := SubString(MeinString,1,1);

Pfaffe 5. Dez 2013 14:36

AW: Frage zum Substring in Delphi
 
Folgendes funktioniert unter Delphi XE5:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  PNR, NR1: String;
begin
  PNR:= edit1.text;
  NR1:= PNR.SubString(0,1); // Startindex ist 0 basierend
  Label1.Caption:= NR1;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:18 Uhr.
Seite 1 von 3  1 23      

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