Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Buchstaben als Zahl geht-aber Zahl zu Buchstabe geht nicht (https://www.delphipraxis.net/166252-buchstaben-als-zahl-geht-aber-zahl-zu-buchstabe-geht-nicht.html)

blondervolker 4. Feb 2012 21:30

AW: Buchstaben als Zahl geht-aber Zahl zu Buchstabe geht nicht
 
Entschuldigung.Ich bin der "PENNER":-D:-D:oops:

Ich seh den Wald vor Bäumen nicht mehr...

Hatte nicht alles in den Code geändert.

ES FUNKTIONIERT EINWANDFREI!!!! DANKE:-D

blondervolker 5. Feb 2012 12:44

AW: Buchstaben als Zahl geht-aber Zahl zu Buchstabe geht nicht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Gebe ich aber die 10 ein ist Schluss mit Lustig.

Siehe Anhang >>>Fehlermeldung

Es kommt eine Meldung:
[DCC Fehler] Unit1.pas(46): E2010 Inkompatible Typen: 'Char' und 'string'
[DCC Fehler] Project1.dpr(5): F2063 Verwendete Unit 'Unit1.pas' kann nicht compiliert werden


Delphi-Quellcode:
function getNR(c : char): char;
begin
 result := ' '; // Ergebniss initialisieren
 case c of
 '1': result := 'A';
 '2': result := 'B';
 '3': result := 'C';
 '4': result := 'D';
 '5': result := 'E';
 '6': result := 'F';
 '7': result := 'G';
 '8': result := 'H';
 '9': result := 'I';
 '10': result := 'J';

    end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var i : INTEGER;
begin
 Label1.Caption := '';
  for i := 1 to length(Edit1.text) do
  begin
    Label1.Caption := Label1.Caption + getNR(Edit1.Text[i])+' ';
    Edit2.Text := Label1.Caption ;
  end;
end;



procedure TForm1.Edit1Change(Sender: TObject);
begin
 edit1.text := uppercase(edit1.text);
 edit1.SelStart := Length(edit1.text);
end;

end.
:oops::oops::oops:

Romiox 5. Feb 2012 13:07

AW: Buchstaben als Zahl geht-aber Zahl zu Buchstabe geht nicht
 
Weil die 10 sich zusammensetzt aus 1 und 0, das erkennst du aber nicht.
Du schaust dir jedes Zeichen einzeln an, und dann kommt er genau bis
1 2 3 4 5 6 7 8 9 1 <--- Alle Bekannt. Dann kommt: 0. Für 0 gibt getNR()
aber nix zurück. Schlimmer noch, getNR gibt nicht '' zurück, sondern
schickt einfach einen Fehler, dass mit der Eingabe nix angefangen werden
kann.


Eine Möglichkeit wäre, den String immer in Pärchen auszulesen, und
dann 01 02 03 etc zu nutzen.
Delphi-Quellcode:
for i := 1 to (length(Edit1.text)-1) do
  begin
    Label1.Caption := Label1.Caption + getNR(Edit1.Text[i]+Edit1.Text[i+1])+' ';
    Edit2.Text := Label1.Caption ;
  end;

blondervolker 5. Feb 2012 13:24

AW: Buchstaben als Zahl geht-aber Zahl zu Buchstabe geht nicht
 
Nee ich wollte jeder Zahl einen einzelnen Buchstaben zuweisen.
Mehr nicht.Aber ab hier '10': result:= 'J'; kommt dann die Meldung:

[DCC Fehler] Unit1.pas(46): E2010 Inkompatible Typen: 'Char' und 'string'

:oops::oops::oops: Bin kein Profi...:-D



'1': result := 'A';
'2': result := 'B';
'3': result := 'C';
'4': result := 'D';
'5': result := 'E';
'6': result := 'F';
'7': result := 'G';
'8': result := 'H';
'9': result := 'I';
'10': result:= 'J';

Hier ist nochmal der gesamte Code:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls,DateUtils,Clipbrd,StrUtils;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Edit2: TEdit;
    Edit3: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

function getNR(c : char): char;
begin
 result := ' '; // Ergebniss initialisieren
 case c of
 '1': result := 'A';
 '2': result := 'B';
 '3': result := 'C';
 '4': result := 'D';
 '5': result := 'E';
 '6': result := 'F';
 '7': result := 'G';
 '8': result := 'H';
 '9': result := 'I';
 
    end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var i : INTEGER;
begin
 Label1.Caption := '';
  for i := 1 to length(Edit1.text) do
  begin
    Label1.Caption := Label1.Caption + getNR(Edit1.Text[i])+' ';
    Edit2.Text := Label1.Caption ;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Edit2.SelectAll;
Edit2.CopyToClipboard;
Edit3.PasteFromClipboard;
Clipboard.Clear;
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
 edit1.text := uppercase(edit1.text);
 edit1.SelStart := Length(edit1.text);
end;

end.

DeddyH 5. Feb 2012 13:49

AW: Buchstaben als Zahl geht-aber Zahl zu Buchstabe geht nicht
 
Ein Char = ein einzelnes Zeichen, "10" sind aber nunmal 2 Zeichen, deshalb die völlig korrekte Meldung.

blondervolker 5. Feb 2012 16:28

AW: Buchstaben als Zahl geht-aber Zahl zu Buchstabe geht nicht
 
Und was kann ich da machen, das man es funktionsfähig bekommt?

Hab "Widechar" genommen,geht auch nicht.

Habe im "Delphi" 7 Buch nachgelesen, aber nix gefunden.

Bitte kann jemand helfen?

Ich komme absolut nicht weiter...

DeddyH 5. Feb 2012 16:43

AW: Buchstaben als Zahl geht-aber Zahl zu Buchstabe geht nicht
 
Ich weiß zwar immer noch nicht so genau, was Du vorhast, aber evtl. klappt es so:
Delphi-Quellcode:
function getNR(const ZahlStr: string): char;
var
  Zahl: integer;
begin
  Result := ' ';
  if TryStrToInt(ZahlStr, Zahl) then
    case Zahl of
      1: result := 'A';
      2: result := 'B';
      3: result := 'C';
      4: result := 'D';
      5: result := 'E';
      6: result := 'F';
      7: result := 'G';
      8: result := 'H';
      9: result := 'I';
    end
  else
    //Fehlermeldung ausgeben oder etwas in der Art
end;

Coffeecoder 5. Feb 2012 18:54

AW: Buchstaben als Zahl geht-aber Zahl zu Buchstabe geht nicht
 
Hi, suchst du möglicherweise nicht nach den Funktionen ord() und chr() ?

Wolfgang Mix 5. Feb 2012 19:00

AW: Buchstaben als Zahl geht-aber Zahl zu Buchstabe geht nicht
 
Mit dem Vorschlag von DeddyH dürfte auch die 10 funktionieren :-)

IceBube 6. Feb 2012 09:11

AW: Buchstaben als Zahl geht-aber Zahl zu Buchstabe geht nicht
 
Also wenn ich das richtig verstanden hab, geht das auch einfacher, mit weniger Zeilen :)

Delphi-Quellcode:
function ZahlToNr(Str: Char) : Integer;
var
 abc : String;
begin
 //Buchstabe in Zahl
 abc := 'abcdefghijklmnopqrstuvwxyz';
 Result := Pos(LowerCase(Str), abc);
end;

function NrToZahl(StrZ:Integer) : String;
var
 abc : String;
begin
 //Zahl in Buchstabe
 abc := 'abcdefghijklmnopqrstuvwxyz';
 Result := abc[StrZ];
end;

lg


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:29 Uhr.
Seite 2 von 2     12   

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