Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

physX

Treue Seele

  • »physX« ist der Autor dieses Themas

Beiträge: 119

Wohnort: Dresden

  • Private Nachricht senden

1

17.07.2009, 13:35

tabelleneintrag auf typ prüfen

Hallo, ich wollte ein kleines Programm erstellen um beliebige ascii tabellen einlesen zu könne; also Tabellen in der Form:

zeile1;eintrag1; eintrag2; eintrag3
zeile2; eintrag4;eintrag5;eintrag6
...
(ob per semikolon, tab oder komma getrennt soll egal sein, muss vom Nutzer vorher festgelegt werden)

etc.
da ich das einlesen der Daten relativ allgemein halten möchte wollte ich fragen, wie ich am besten überprüfe welchem Typ (also int, float, char etc) z.B. eintrag2 entspricht? mir ist bisher keine wirklich gute Möglichkeit eingefallen das eindeutig zu überprüfen. Kann ich das mit sizeof den überhaupt eindeutig nachprüfen? sizeof(eintrag2) ist nicht eindeutig bei Mischung von Text und int/float in der Tabelle.
weiss da vielleicht jemand weiter?

gruss

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

17.07.2009, 13:43

Das geht so nicht so einfach.

Du musst irgendwie spezifiziert haben, wie die Daten vorliegen und wenn du das nicht vorher schon weisst, dann musst du das halt im File spezifizieren. Also vlt. durch ein Präfix vor jedem Eintrag, oder ein komplizierteres System. Aber so aus dem nichts heraus geht das nicht.
Z.B könnte ja mal ein Text nur eine Zahl sein usw.

3

17.07.2009, 14:03

Du hast ja erstmal nur Strings. Das einzige was du machen kannst, ist zu überprüfen ob sich der string in eine andere Variable konvertieren lässt. Ein Int kann man immer auch als eine Fließkommazahl interpretieren, und ob es jetzt eine kleine zahl (short) oder eine große ist (int) kann man auch nicht sagen.
Du kannst auch sämtliche Zeilen durchgehen und die Schnittmenge aller Möglichen Typen pro Spalte ermitteln, das wird vielleicht besser, aber auch nicht zwangsläufig eindeutig.

Wie gesagt, wenn es Eindeutig sein soll, musst du schon die Typinformation irgendwie speichern.
Lieber dumm fragen, als dumm bleiben!

physX

Treue Seele

  • »physX« ist der Autor dieses Themas

Beiträge: 119

Wohnort: Dresden

  • Private Nachricht senden

4

17.07.2009, 14:20

Zitat von »"drakon"«

Das geht so nicht so einfach.

Du musst irgendwie spezifiziert haben, wie die Daten vorliegen und wenn du das nicht vorher schon weisst, dann musst du das halt im File spezifizieren. Also vlt. durch ein Präfix vor jedem Eintrag, oder ein komplizierteres System. Aber so aus dem nichts heraus geht das nicht.
Z.B könnte ja mal ein Text nur eine Zahl sein usw.


hmm. ich müsste also erstmal die eintraege alle sowohl als text als auch als float (oder int) einlesen und danach den user entscheiden lassen wie die Spalte interpretiert werden soll. Zahlen könnte man doch über ascii-codes überprüfen bzw. ob der Text aus reinen Zahlen besteht. Also auf die Menge 0x30-0x39 checken und mind 1zeichen im eintrag nicht dieser menge entspricht den eintrag als text deklarieren.

aber ich seh schon, dass es nicht so einfach wird wie ich gehofft hatte :roll:
danke
Gruss

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

5

17.07.2009, 14:37

Klar du kannst gewisse Annahmen machen, aber das kann durchaus auch Fehler geben. Sagen wir z.B, dass du ein Text hast, der auf eine Zahl endet, ein Punkt folgt und mit einer Zahl weiter geht. Dann hast du schon dein vermeintliches float. ;)

Sag einfach mal, für was du das brauchst. Ich bin sicher, dass es dafür bessere Möglichkeiten gibt.

physX

Treue Seele

  • »physX« ist der Autor dieses Themas

Beiträge: 119

Wohnort: Dresden

  • Private Nachricht senden

6

17.07.2009, 14:57

Habe tabellen wo die Spalteneinträge durch z.B. Semikolon getrennt sind. die erste Spalte hat eine Zahl (die einem Datum entspricht), dann halt verschiedene Parameter die entweder eine reine Zahl sind oder Text.

Dein Beispiel wäre dabei kein Problem, da ich ja weiss dass die Eintraege alle per Semikolon getrennt sind und ich ja überprüfen kann ob sich ausser einer zahl noch andere zeichen mit im Eintrag befinden. Komma bzw. Punkt müsste ich dann für float nochmal extra behandeln. Trennung von 1000er habe ich glücklicherweise nicht. Allerdings können auch Eintraege wie 1.5E+12 vorhanden sein. Das ist echt nasty...

letztlich will zwei tabellen einlesen, jeweils den mittelwert der zahlenwerte pro tag bilden und danach beide Tabellen über die danach gemeinsamen Tage mergen.

die Anzahl der Parameter pro Tag ist in beiden Tabellen unterschiedlich, daher brauch ich den Mettelwert pro Tag. Danach kann ich dann jeweils die Mittelwerte der Parameter beider Tabellen in einer Tabelle darstellen.
Gruss

Über gängige Programme wie excel oder statistica war das leider bisher nicht möglich. Daher versuch ich das jetzt selbst zu loesen.

Zitat von »"drakon"«

Klar du kannst gewisse Annahmen machen, aber das kann durchaus auch Fehler geben. Sagen wir z.B, dass du ein Text hast, der auf eine Zahl endet, ein Punkt folgt und mit einer Zahl weiter geht. Dann hast du schon dein vermeintliches float. ;)

Sag einfach mal, für was du das brauchst. Ich bin sicher, dass es dafür bessere Möglichkeiten gibt.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

7

17.07.2009, 15:05

Wenn du gewisse Annahmen machen kannst, dann kannst du drauf aufbauen. ;)

Ansonsten kannst du bei einem Zweifelsfall ja auch den User fragen, wie er das behandeln soll.

Werbeanzeige