AGB  ·  Datenschutz  ·  Impressum  







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

Brauch hilfe bei Mathematischer formel

Ein Thema von Gehstock · begonnen am 6. Okt 2006 · letzter Beitrag vom 9. Okt 2006
Antwort Antwort
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#1

Brauch hilfe bei Mathematischer formel

  Alt 6. Okt 2006, 20:22
also in ein Tmaskedit wird eine imei eingegeben (14 stellig) dabei soll dann automatisch die 15. stelle berechnet werden

die berechnung funktioniert so-
{Beispiel-IMEI: 49 06 49 40 31 41 72
Jede 2. Ziffer verdoppeln (beginnend bei 2.):
9, 6, 9, 0, 1, 1, 2
verdoppelt: 18, 12, 18, 0, 2, 2, 4
Alle einzelnen Ziffern addieren1 + 8) + (1 + 2) + (1 + 8) + 0 + 2 + 2 + 4 =
28
Jede 2. Ziffer addieren (beginnend bei 1.):
4 + 0 + 4 + 4 + 3 + 4 + 7 =
27
Beide Ergebnisse addieren:
28 + 27 =
55
Ergebnis modular 10*:
55 mod 10 = 5, Rest =
5
* 10 so oft subtrahieren, wie möglich
Differenz zu 10:
10 - 5 = 5 Ergebnis = 5}

nur wie pack ich das am besten in einen Code
Marcel
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Brauch hilfe bei Mathematischer formel

  Alt 6. Okt 2006, 20:37
Ich würde den string anhand der trenner Leerzeichen aufpitten:

Delphi-Quellcode:
var
   sl: TStrings;
   zahl: string;
   imei: Integer;
   i: integer;
...
begin
  imei := 0;
  sl := TStringList.Create;
  sl.Delimiter := ' ';
  sl.DelimitedText := EditIMEI.Text;
  for i := 0 to 6 do //
  begin
      zahl := IntToStr(Ord( sl.Strings[2])-48)*2);
      imei := imei + zah[1] + zahl[2] + Ord( sl.Strings[i]-48);
  end;
  imei := imei mod 5;
...
getippt und nicht getestet.
Markus Kinzler
  Mit Zitat antworten Zitat
bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#3

Re: Brauch hilfe bei Mathematischer formel

  Alt 6. Okt 2006, 21:13
das ist ein algorithmus und keine mathematische formel.

und wie sollen wir dir helfen? sollen wir dir das in code formulieren? mach's doch lieber selbst und frag bei spezifischeren problemen. das hier ist ja kein hausaufgabenforum...
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Brauch hilfe bei Mathematischer formel

  Alt 6. Okt 2006, 23:57
ok dann anders


wie kann ich einzelnen strings bestimmte stellen in einen tedit zuweisen

Delphi-Quellcode:
unit Unit3;

interface

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

type
  TForm3 = class(TForm)
    MemoInfo: TMemo;
    Button1: TButton;
    EditIMEI: TEdit;
    Check: TEdit;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure EditIMEIChange(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
begin
MemoInfo.lines.add('Prüfe eingegebene IMEI');
If length(EditIMEI.Text)<14 then begin
MemoInfo.lines.add('Falsche IMEI eingegeben');
// später dann die eigentliche berechnung (unlockcode) an dieser stelle
end;


end;
//berechnung Checksumme is eigendlich nicht so wichtig aber der effekthascherei wegen(könnte man ja eingeben lassen)
{Beispiel-IMEI: 49 06 49 40 31 41 72
Jede 2. Ziffer verdoppeln (beginnend bei 2.):
9, 6, 9, 0, 1, 1, 2
verdoppelt: 18, 12, 18, 0, 2, 2, 4
Alle einzelnen Ziffern addieren:(1 +  + (1 + 2) + (1 +  + 0 + 2 + 2 + 4 =
28
Jede 2. Ziffer addieren (beginnend bei 1.):
4 + 0 + 4 + 4 + 3 + 4 + 7 =
27
Beide Ergebnisse addieren:
28 + 27 =
55
Ergebnis modular 10*:
55 mod 10 = 5, Rest =
5
* 10 so oft subtrahieren, wie möglich
Differenz zu 10:
10 - 5 = 5 Ergebnis = 5}

procedure TForm3.EditIMEIChange(Sender: TObject);
var
p : String;
Diff : String;
Sub : string;
Zwei : string;
vier : string;
sechs : string;
acht : string;
zehn : string;
zwölf : string;
vierzehn : string;
begin
zwei = editImei.
p := (sub)-(diff);// nur zum test später dann mit formel
EditIMEI.MaxLength:=14;
If length(EditIMEI.Text)=14 then begin
  Check.Text:=(p) // das soll die checksumme werden
end;
end;

end.
Marcel
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Brauch hilfe bei Mathematischer formel

  Alt 7. Okt 2006, 07:56
Guten Morgen.

Ich gehe davon aus, dass eine IMEI-Nummer geprüft und nicht erzeugt werden soll. Dann allerdings ist die Eingabe von allen 15 Stellen obligatorisch - wie sollte sonst der Zahlendreher (oder Lesefehler oder Schreibfehler) bei der Eingabe nur der ersten 14 Stellen festgestellt werden, was ja die eigentliche Funktion der Prüfziffer ist?

Ich würde den Benutzer die IMEI eingeben lassen, anschließend die Leerstellen entfernen (falls er sich die Mühe gemacht hat diese einzugeben) und ihn dann über die Integrität der IMEI informieren. Die Berechnung der Prüfziffer selbst macht nur Sinn für maschinell vorgegebene Seriennummern.

Grüße vom marabu
Angehängte Dateien
Dateityp: pas func.isvalidimei_209.pas (674 Bytes, 3x aufgerufen)
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Brauch hilfe bei Mathematischer formel

  Alt 7. Okt 2006, 15:44
wie bekomme ich daas jetzt verdoppelt
also er nimmt die zahl von der 2. stelle und soll sie gleich verdoppeln

Zwei := EditIMEI.text[2]*2; geht nicht

ups erledigtZwei := EditIMEI.text[2*2];
Marcel
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Brauch hilfe bei Mathematischer formel

  Alt 7. Okt 2006, 16:09
Delphi-Quellcode:
 
// var Zwei: String;
Zwei := IntToStr(StrToInt(EditIMEI.Text[2]) * 2);
Aber bist du sicher, dass du so arbeiten möchtest?

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Brauch hilfe bei Mathematischer formel

  Alt 7. Okt 2006, 16:17
Bin ja froh das es läuft aber jetzt anderes problem
hab die imei jetzt in strings aufgeteilt und die sollen jetzt miteinander addiert werden

also a+b+c+d führt zu abcd
also hab ichs so versucht bitte nicht hauen
ADD2 := inttostr(strtoint(eins)+strtoint(drei)+strtoint(funf)+strtoint(sieben)+strtoint(neun)+strtoint(elf)+strtoint(dreizehn)); klappt auch aber bei jeder eingabe erscheint eine fehlermeldung mit einen komma drin funzt aber trotzdem
Miniaturansicht angehängter Grafiken
unbenannt_418.jpg  
Marcel
  Mit Zitat antworten Zitat
9. Okt 2006, 01:01
Dieses Thema wurde von "alcaeus" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Ist ebenfalls eine Delphi-Frage.
Antwort Antwort


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 04:54 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