![]() |
Brauch hilfe bei Mathematischer formel
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 addieren:(1 + 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 |
Re: Brauch hilfe bei Mathematischer formel
Ich würde den string anhand der trenner Leerzeichen aufpitten:
Delphi-Quellcode:
getippt und nicht getestet.
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; ... |
Re: Brauch hilfe bei Mathematischer formel
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... |
Re: Brauch hilfe bei Mathematischer formel
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. |
Re: Brauch hilfe bei Mathematischer formel
Liste der Anhänge anzeigen (Anzahl: 1)
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 |
Re: Brauch hilfe bei Mathematischer formel
wie bekomme ich daas jetzt verdoppelt
also er nimmt die zahl von der 2. stelle und soll sie gleich verdoppeln
Delphi-Quellcode:
geht nicht
Zwei := EditIMEI.text[2]*2;
ups erledigt
Delphi-Quellcode:
Zwei := EditIMEI.text[2*2];
|
Re: Brauch hilfe bei Mathematischer formel
Delphi-Quellcode:
Aber bist du sicher, dass du so arbeiten möchtest?// var Zwei: String; Zwei := IntToStr(StrToInt(EditIMEI.Text[2]) * 2); Freundliche Grüße vom marabu |
Re: Brauch hilfe bei Mathematischer formel
Liste der Anhänge anzeigen (Anzahl: 1)
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
Delphi-Quellcode:
klappt auch aber bei jeder eingabe erscheint eine fehlermeldung mit einen komma drin funzt aber trotzdem
ADD2 := inttostr(strtoint(eins)+strtoint(drei)+strtoint(funf)+strtoint(sieben)+strtoint(neun)+strtoint(elf)+strtoint(dreizehn));
|
DP-Maintenance
Dieses Thema wurde von "alcaeus" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Ist ebenfalls eine Delphi-Frage. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz