Autor Beitrag
linesk
Hält's aus hier
Beiträge: 7



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 18.05.10 19:57 
Moin und :welcome: 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 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Di 18.05.10 20:02 
ausblenden 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); //Position von ':' ermitteln
  tele:=Copy(s,0,Position-1); //Kopieren von Anfang(0) bis zur Position
  passwort:=Copy(s,Position+1,Length(s)); //kopieren von Position bis zum ende des Strings

  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 user profile iconNarses: Delphi-Tags hinzugefügt
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 18.05.10 20:11 
Moin!

Diese Zeile:
user profile iconlinesk hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
s:=FLOATTOINT(e_eingabe.text);					
kann unmöglich richtig sein. Selbst wenn es FloatToInt() gäbe (mein Delphi kennt´s nicht :nixweiss:) sollte der Ergebnistyp wohl Integer sein, und das kann man keinem String zuweisen.

user profile iconlinesk hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconlinesk hat folgendes geschrieben Zum zitierten Posting springen:
Aber das Programm hat irgendwie gar keine Meinung dazu =(
Das ist nicht schlimm, meine Programme meinen auch immer nix... 8) :D

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
linesk Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 18.05.10 20:25 
Moin!

user profile iconlinesk hat folgendes geschrieben Zum zitierten Posting springen:
normalerweise zeigt mir das ja dann an was nicht stimmt
user profile iconlinesk hat folgendes geschrieben Zum zitierten Posting springen:
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: :idea:
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: 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 :think:

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 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: 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 user profile iconNarses: Beiträge zusammengefasst---

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: 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 :wink:
z.B.
ausblenden Delphi-Quelltext
1:
2:
3:
lb_ausgabe.Items.add := 'Telefonnummer: ' + Edit1.text;
lb_ausgabe.Items.add := 'Passwort: ' + Edit2.text;
//usw.


Gruss Alf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Di 18.05.10 23:25 
user profile iconlinesk hat folgendes geschrieben Zum zitierten Posting springen:
Ich glaub das Programm will mich verarschen.
Das wird's sein :P

user profile iconlinesk hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconlinesk hat folgendes geschrieben Zum zitierten Posting springen:
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{=6, da 6. Zeichen}, AnzahlZeichen{=4}) 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).

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
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 :wink:
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 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 19.05.10 17:21 
Danke klappt soweit alles, hab mir für die Methode mit lb_ausgabe.Items[n] entschieden.
Muss jetzt nur noch die Uhrzeit und das Datum logisch dartstellen, aber das dürfte ich so hinbekommen mit POS.

user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
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 :wink:
Vermute mal, der String kommt über das Internet/sonstwie elektronisch rein. Ansonsten full ack.

Jap laut Aufgabenstellung ist die Eingabe telefonisch. Die Idee mit den Editfeldern hat ich auch, wollt mein Lehrer aber so nicht, leider. ;)

Moderiert von user profile iconNarses: Zitat kenntlich gemacht.