| Autor |
Beitrag |
linesk
Hält's aus hier
Beiträge: 7
|
Verfasst: Di 18.05.10 19:54
Es handelt sich um Registierung eines Filmes bei einer telefonischen Filmausleihe, die eingegebenen Daten sollen umgewandelt und gut verständlich in einer Listbox ausgegeben werden.
Und zwar soll die Eingabe z.B.so aussehen:
2584#2568#335#1500#12032010
Dabei stellt die erste Nummer eine 4-8 stellige Telefonnummer dar, die zweite ein Passwort, die dritte eine 1-4 stellige filmnummer, die vierte die Uhrzeit und die letzte das Datum dar.
Ich hab das bereits mit Explode versucht allerdings geht das nicht wirklich =(.
Zumal komischer Weise das Programm sich auch nicht starten lässt, mir aber auch keine Fehler angezeigt werden. Es handelt sich um Delphi 2010.
Kann mir bitte jemand weiter helfen?
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 18.05.10 19:57
Moin und  im Forum!
Wie sieht denn dein Code aus?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
linesk 
Hält's aus hier
Beiträge: 7
|
Verfasst: Di 18.05.10 20:02
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.b_registrierenClick(Sender: TObject); var s:String; Position,tele,passwort:Integer; begin s:=FLOATTOINT(e_eingabe.text); Position:=Pos('#',s); tele:=Copy(s,0,Position-1); passwort:=Copy(s,Position+1,Length(s)); lb_ausgabe.items.Add('Telefonnummer:'+FLOATTOSTRF(tele,ffnumber,8,4));
end; |
Also ich hab das erstmal probiert, normalerweise zeigt mir das ja dann an was nicht stimmt und ich komm dann auf das richtige. Aber das Programm hat irgendwie gar keine Meinung dazu =(
Moderiert von Narses: Delphi-Tags hinzugefügt
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 18.05.10 20:11
Moin!
Diese Zeile:
linesk hat folgendes geschrieben : | Delphi-Quelltext 1:
| s:=FLOATTOINT(e_eingabe.text); | |
kann unmöglich richtig sein. Selbst wenn es FloatToInt() gäbe (mein Delphi kennt´s nicht  ) sollte der Ergebnistyp wohl Integer sein, und das kann man keinem String zuweisen.
linesk hat folgendes geschrieben : | | Also ich hab das erstmal probiert, normalerweise zeigt mir das ja dann an was nicht stimmt und ich komm dann auf das richtige. |
Hier muss dir der Compiler eine Meldung schmeißen, dass kann nicht klappen.
linesk hat folgendes geschrieben : | | Aber das Programm hat irgendwie gar keine Meinung dazu =( |
Das ist nicht schlimm, meine Programme meinen auch immer nix...
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
linesk 
Hält's aus hier
Beiträge: 7
|
Verfasst: Di 18.05.10 20:18
Naja genaugenommen
Ich weiß, ich hatte es auch vorher anders bzw mit integer, aber weil es nicht ging hab ich probiert.
Hab einfach das kopiert was gerade da stand.
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 18.05.10 20:25
Moin!
linesk hat folgendes geschrieben : | | normalerweise zeigt mir das ja dann an was nicht stimmt |
linesk hat folgendes geschrieben : | Naja genaugenommen
Ich weiß, ich hatte es auch vorher anders |
Hm  halten wir also zunächstmal fest, dass du nicht das schreibst, was du wirklich gemacht hast und/oder der Compiler dazu gesagt hat. Klingt nicht besonders schlau, dieses Verhalten, oder?
Probier das mal so:
Delphi-Quelltext 1: 2: 3: 4: 5:
| procedure TForm1.b_registrierenClick(Sender: TObject); begin lb_ausgabe.Items.Delimiter := '#'; lb_ausgabe.Items.DelimitedText := e_eingabe.Text; end; | Tut das das, was du haben willst?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
linesk 
Hält's aus hier
Beiträge: 7
|
Verfasst: Di 18.05.10 20:31
War ja nur das Float falsch  sonst wars genauso
ich würde Dir ja gern sagen was es macht, aber es macht nix. Das lässt sich einfach nicht ausführen *grml*
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Di 18.05.10 21:14
Hi
Also du führst die .exe aus/compillierst, und es erscheint nicht einmal ein Fenster? Und das, obwohl der Compiler dir keine weiteren Hinweise gibt?
Dann sieh' doch einmal im Task-Manager nach, ob das Programm unter den Tasks aufgeführt wird. Vielleicht haben wir hier noch ein ganz anderes Problem
lg,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
linesk 
Hält's aus hier
Beiträge: 7
|
Verfasst: Di 18.05.10 21:27
Ich glaub das Programm will mich verarschen.
Ich hab jetzt erstmal neu angefangen und jetzt lässt es mich auch starten, ka was bei dem anderen das Problem war/ist.
Ich probier jetzt mal die Methoden aus.
--- Moderiert von Narses: Beiträge zusammengefasst---
Narses hat folgendes geschrieben : | Delphi-Quelltext 1: 2: 3: 4: 5:
| procedure TForm1.b_registrierenClick(Sender: TObject); begin lb_ausgabe.Items.Delimiter := '#'; lb_ausgabe.Items.DelimitedText := e_eingabe.Text; end; | Tut das das, was du haben willst? |
Also es tut schonmal das in die listbox einordnen ja, das will ich schonmal.
allerdings soll das ganze am end wie ein Kassenbon aussehen
quasi:
Telefonnummer: 3695
Passwort: 2589
Filmnummer:12
Uhrzeit: 15:00
Datum: 23.05.2010
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Di 18.05.10 21:34
hmm und was hindert dich daran mit einer schleife jedes item in der Listbox durchzugehen und jeweils deinen gewünschten Text davor zu setzen?
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
linesk 
Hält's aus hier
Beiträge: 7
|
Verfasst: Di 18.05.10 21:38
dumme frage: aber wie komm ich jetzt wieder an die einzellnen items rann? die sind ja quasi nur umgeordnet und nicht genau bestimmt
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Di 18.05.10 22:33
Hi, mal ne andere Frage.
Wie so machst Du die Eingabe nicht mit 5 Editfelder? Ersparst Dir damit die Eingabe mit '#' ,dürfte auch übersichtlicher sein und kannst dann, bei der Übergabe in das ListFeld, noch die Zuordnung machen.
So wie Du es haben willst
z.B.
Delphi-Quelltext 1: 2: 3:
| lb_ausgabe.Items.add := 'Telefonnummer: ' + Edit1.text; lb_ausgabe.Items.add := 'Passwort: ' + Edit2.text; |
Gruss Alf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Di 18.05.10 23:25
linesk hat folgendes geschrieben : | | Ich glaub das Programm will mich verarschen. |
Das wird's sein
linesk hat folgendes geschrieben : | allerdings soll das ganze am end wie ein Kassenbon aussehen
Telefonnummer: 3695
Passwort: 2589
Filmnummer:12
Uhrzeit: 15:00
Datum: 23.05.2010 |
Würde ich mit Labels machen, damit der User auch mit unausgefüllten Feldern schon sieht, was dort hineinkommen wird.
linesk hat folgendes geschrieben : | | dumme frage: aber wie komm ich jetzt wieder an die einzellnen items rann? die sind ja quasi nur umgeordnet und nicht genau bestimmt |
Die Methode mit Listbox(dafür steht lb_ausgabe doch, oder?) und Delimiter: '#' ist einfach und schnell; zur Weiterverarbeitung aber nicht so gut geeignet.
Die jeweilige Zeile auslesen kannst du vermutlich über lb_ausgabe.Items[i], wobei i=0,1,..,N die i-te Zeile ist, und entweder eine Integervariable(Items[i]) oder ein Zahlenwert(Items[3], Items[25], ..) sein kann. Du könntest jetzt in einem zweiten Schritt die Beschriftungen und Nummern in einen String packen, und neu einschreiben.
Besser dazu geeignet, ist die direktere Methode:
Du hast den String S(z.B. ='2584#2568#335#1500#12032010'), und kannst mit Copy(S, StartIndex, AnzahlZeichen) einen Teilstring herauskopieren.
Pos('#', S) liefert dir die Position des ersten Vorkommens von '#' in S überhaupt, sowie
PosEx('#', S, 23) die Position des ersten Vorkommens ab dem 23. Zeichen.
Mit Pos und PosEx(genauerees zu den Funktionen findest du in der Delphi-Hilfe:F1) bekommst du die Stellen in S, an denen sich ein '#' befindet. mit Copy kannst du diese Texte herausschneiden, und beliebig verbauen(ich wäre ja für Editfelder, auf read-only, damit der Text herauskopiert werden kann).
ALF hat folgendes geschrieben : | Wie so machst Du die Eingabe nicht mit 5 Editfelder? Ersparst Dir damit die Eingabe mit '#' ,dürfte auch übersichtlicher sein und kannst dann, bei der Übergabe in das ListFeld, noch die Zuordnung machen.
So wie Du es haben willst  |
Vermute mal, der String kommt über das Internet/sonstwie elektronisch rein. Ansonsten full ack.
lg,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
linesk 
Hält's aus hier
Beiträge: 7
|
Verfasst: Mi 19.05.10 17:21
|
|