Texte sortieren

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Texte sortieren

    Hallo Freunde,
    ich habe Texte in verschiedenen Darstellungsformen (siehe Anhang).
    Da soll hinterher ein String in folgender Form bei rumkommen: Text1 + Text2 + Text3 + Text4.

    Das Problem ist.. Text 3 kann zB etwas weiter links wie Text1 stehen, oder Text 2 etwas höher als Text1.

    Hat jemand von euch eine gute Idee wie ich die Texte sortiert bekomme?


    Vielen Dank für die Anregungen im Vorraus!!
    Bilder
    • Textsortierproblem.jpg

      12,94 kB, 242×452, 85 mal angesehen
    @Cphil Wewnn ich Dich richtig verstehe, willst Du nicht Texte sortieren, sondern Label ausrichten.
    Falls das so ist, benenne diesen Deinen Thread entsprechend um.
    Was hat das Ausrichtungs-Problem mit der Textverknüpfung zu tun?
    Wenn Du eine Form mit Labeln hast, kannst Du sie im Designer ausrichten:

    Wenn ich Dich falsch verstanden haben sollte, formuliere Dein Problem so, dass wir ohne NAchfragen verstehen, was Du meinst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo RodFromGermany,

    das verstehst du falsch. Von mir auch etwas unglücklich formuliert.
    Ich kann von einem PDF einen Bereich aufwählen, in dem Texte stehen wie im Anhang zu sehen.
    Die Texte sollen dann sortiert in einen String geschrieben werden.
    Von den Texten habe ich nur die Information Startpunkt sowie Länge und Breite.

    Nun brauche ich einen Algorithmus der die Texte sortiert.

    Ich hatte zunächst daran gedacht..

    1. Schreibe alle Texte in eine Liste
    2. schaue welcher Text am weitesten oben steht
    3. schaue welche Text sich auf gleicher Ebene befinden
    4. sortiere alle gefundenen Texte der gleichen Ebene von links nach rechts und streiche die aus der Liste
    5. Fange wieder von vorne an nach dem am oben stehensten Text zu suchen mi d

    Cphil schrieb:

    das verstehst du falsch. Von mir auch etwas unglücklich formuliert.
    Du hast Dein Problem unvollständig und unkorrekt beschrieben; klar, dass ich daraus falsche Schlüsse ziehe.
    Also:
    Was sehen wir auf dem Bild?
    Was davon kommt wie nach VB.NET?
    Welche Informationen sind gesichert vorhanden, um das Problem zu lösen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Cphil schrieb:

    In VB.NET kommt die Informationen an: Text

    Ist Text = der Viererblock aus Text1-4 oder kommen die Pakete einzeln an? Oder kommen gar die 3 Viererblöcke aus Post#1 auf einmal an?
    Wenn Text1-4 einzeln ankommen: Steht bei Ankunft schon fest, in welcher Reihenfolge die ankommen?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Cphil schrieb:

    Länge, Breite des Textes
    Das sieht mir dann eher aus wie ein Pixelbild, nicht aber ein Control mit nem String.
    Da müsstest Du wohl eine OCR drüber jagen.
    Kann der Text von Hand markiert und kopiert werden?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Und jetzt bitte noch die Fragen aus Post#6 ausführlich beantworten und dann könnte ich vielleicht weiterhelfen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Cphil schrieb:

    davon dann 4-6 Texte
    Kannst Du diese Texte in einem Text-Programm (Word, Adobe) markieren und den Inhalt in das Notepad einfügen?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @Cphil
    Hier herrscht große Unklarheit darüber was dein tatsächliches Problem ist, da deine Frage sehr viel Interpretationsspielraum bietet.

    Daher beantworte bitte diese Frage:

    Sind die Texte in einem PDF/Bild/o.ä. welches als Datenquelle fungiert und müssen daraus anhand der Position von dir erst extrahiert (z.b. per „Texterkennung“) werden und hierzu benötigst du nun unsere Hilfe? Oder aber stehen dir die Texte bereits als einzelne Variablen in Code zur Verfügung und es geht in diesem Thread rein darum selbige Alphabetisch zu sortieren?

    Wenn du die Texte bereits als Variablen hast, dann pack die in eine List(Of String) und sortiere die dann:

    stackoverflow.com/questions/18…c-listof-string-in-vb-net

    Andernfalls, lade bitte mal ein Beispiel der Datenquelle im original Format hoch.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Ich lese ein PDF ein und habe dann die Möglichkeit mir eine PDF-Stuktur anzeigen zu lassen.
    Da stehen dann Informationen wie beschrieben drin:

    DiesIstEinText1 Position x: 44,4Position y: 55,5Bounding Rechteck: x,y width, height
    DiesIstEinText2 Position x: 66,4Position y: 75,5Bounding Rechteck: x,y width, height

    Diese Texte möchte ich dann sortieren.. 1. "Zeile" von links nach rechts, 2. "Zweile" von links nach rechts. Ich habe alle Informationen über Texte, Positionen und Höhe, Breite.


    Beispiel:
    ......DiesIstEinText1 DiesIstEinText2
    ...DiesIstEinText3 DiesIstEinText4


    Array:
    DiesIstEinText1
    DiesIstEinText2
    DiesIstEinText3
    DiesIstEinText4
    Ah, jetzt wird's endlich verarbeitbar.
    Nun, dann müsstest Du wohl festlegen, in welchen y-Differenz-Grenzen zwei Texte als "in einer Zeile" gelten. Die links-nach-rechts-Reihenfolge dürfte klar sein: der mit dem kleinsten x-Wert in einer Zeile kommt zuerst.

    Eine Möglichkeit wäre, die infrage kommenden Texte grob nach x-Wert in linke Spalte und rechte Spalte einzuteilen und dann eben von oben nach unten eine List(Of (String, String)) aufzubauen, die dann eben v.o.n.u. befüllt wird.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.