String teilen und in Variablen schreiben

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

nobijohn
*
Beiträge: 19
Registriert: Do, 30.05.2024 00:30

String teilen und in Variablen schreiben

Beitrag von nobijohn »

Hallo,
aus einer Zelle die aus zwei Strings besteht benötige ich beide Teile einzeln:

sub Main
BigString = "Kunde Fa / 85432 Ort"
Inhalt=ArrayOutOfString(BigString," / ")
For i = LBound(Inhalt()) to UBound(Inhalt())
Print Inhalt(i)
' Part&Chr(i)=Inhalt(i)
Next
end Sub

Das funktioniert aber ich scheitere daran die beiden Teile in Variablen zu schreiben.
Als Anfänger wäre ich für einen Tip dankbar.
Karolus
********
Beiträge: 7474
Registriert: Mo, 02.01.2006 19:48

Re: String teilen und in Variablen schreiben

Beitrag von Karolus »

Hallo

Vor 11 Tagen schriebst du
…Die Aufbereitung der KdArtStat ist zu 98,5% fertig …

Bei wieviel % bist du jetzt?

Code: Alles auswählen

bigstring = "Kunde Fa / 85432 Ort"

a, b = map(str.strip, bigstring.split("/"))
print( f"{a=}\n{b=}" )
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
nobijohn
*
Beiträge: 19
Registriert: Do, 30.05.2024 00:30

Re: String teilen und in Variablen schreiben

Beitrag von nobijohn »

Danke für den Code. Ich habe viel gelernt aber so weit bin ich noch nicht. Versteh nur Bhf und wenn ich versuche das abgeschriebene auszuführen kommt "unerwartetes Symol". Dachte a, b seien die Variablen??? Erklär bitte was du da machst und wie ich damit weitermachen kann.
ScrSplit.PNG
ScrSplit.PNG (12.58 KiB) 2487 mal betrachtet
Zu deiner Frage %?
Die KdArtStat war letzte Woche fertig und funktioniert. Da ca. 35000 Formeln via Schleifen eingebaut werden lohnt der Weg zur Kaffemaschine... Um das mit Arrays zu beschleunigen könnte ich beim nächsten Update ggf. angehen. Das Löschen der Doppeleinträge führt dazu dass "goDownToEndOfData" in den Leerzeilen hängenbleibt, egal ob mit (255) oder (31) gelöscht. Hier bleibts wohl bei der Schleife um die Nullen zu überspringen...
Zwischenzeitlich ist die Adressliste per Makro aufbereitet, ging ohne Hilfe.
Im Nachgang will ich noch in der KdArtStat die Funktion einbauen dass hinzugekommene Kunden rudimentär mit KdNr, Name, Ort in die Adressliste geschrieben werden. Dafür brauchts den Split.
Jetzt mach ich noch die Interaktion zwischen den Tables und wenn ich mal Zeit habe will ich mal schauen was für Möglichkeiten für eine nette GUI bestehen.
Tab0: Adressliste (read only) mit Schaltflächen zum Sortieren und Knopf um über die KdNr zu Tab1 zu springen.
Tab1: Datensatz Kunde mit Eingabemöglichkeit für Änderungen, Ergänzungen sowie Schaltfläche zum Drucken und Speichern.
Tab2: KdArtStat aktuell mit Art/Umsatz über KdNr selektiert (max. 1 mal pro Monat Update)
Tab3: KdArtStatPrev Hier kommt beim Update die bestehende Tabelle hin zum Prüfen ob nichts fehlt.
Tab4: evtl. Irgendeine Auswahl zum Drucken.
mikeleb
*******
Beiträge: 1334
Registriert: Fr, 09.12.2011 16:50

Re: String teilen und in Variablen schreiben

Beitrag von mikeleb »

Hallo,
Karolus' Code ist in Python geschrieben.
In Starbasic z. B.

Code: Alles auswählen

sub Main
BigString = "Kunde Fa / 85432 Ort"
Inhalt=split(BigString," / ")
a = trim(Inhalt(0))
b= trim(Inhalt(1))
end Sub 
Es wäre aber auch durchaus sinnvoll, es beim Array zu lassen - je nachdem, was man danach noch damit machen will ...
Gruß,
mikeleb
mikeleb
*******
Beiträge: 1334
Registriert: Fr, 09.12.2011 16:50

Re: String teilen und in Variablen schreiben

Beitrag von mikeleb »

Hallo,
Da ca. 35000 Formeln via Schleifen eingebaut werden lohnt der Weg zur Kaffemaschine... Um das mit Arrays zu beschleunigen könnte ich beim nächsten Update ggf. angehen.
Das deutet darauf hin, dass das Gesamtprojekt genauer betrachtet werden sollte.
Der Split ist das geringste Problem.
Das Löschen der Doppeleinträge führt dazu dass "goDownToEndOfData" in den Leerzeilen hängenbleibt, egal ob mit (255) oder (31) gelöscht. Hier bleibts wohl bei der Schleife um die Nullen zu überspringen...
Das wird einfacher gehen. Dazu wäre eine Beispieldatei mit deinen aktuellen Makros hilfreich, um zu verstehen, was du vorhast.
Gruß,
mikeleb
nobijohn
*
Beiträge: 19
Registriert: Do, 30.05.2024 00:30

Re: String teilen und in Variablen schreiben

Beitrag von nobijohn »

Danke, dein Code ist schön schlank und geht gut. Das mit den Arrays hatte ich zwischenzeitlich auch hingekriegt, bringt aber für die weitere Verwendung eher nix. Dein Hilfsangebot mir beim Gesamtkonstukt zu helfen nehme ich gerne an. Allerdings erst wenn die erste Excel Update Datei kommt. Jetzt muss ich die V1 an den Start bringen, bin 5 Wochen in Verzug :(
Mein aktuelles Problem: Ich bin im Makro in Table2 auf der KdNr. Jetzt soll in Table0 die Col0 nach dieser KdNr durchsucht werden und wenn vorhanden daneben in Col1 ein A eingetragen werden. Wenn nicht vorhanden unten am Ende die neue KdNr und daneben A, "", SplitA, SplitB in die Zellen geschrieben werden. Mit dem Suchen/Ersetzen wie bei Dannenhöfer gehts nicht und mit Uno klappt gar nichts. Mir fällt da nur ein mit einer Schleife durch die Spalte zu eiern. Du hast vermutlich eine bessere Idee?
Karolus
********
Beiträge: 7474
Registriert: Mo, 02.01.2006 19:48

Re: String teilen und in Variablen schreiben

Beitrag von Karolus »

Hallo
mikele hat geschrieben:Das wird einfacher gehen. Dazu wäre eine Beispieldatei mit deinen aktuellen Makros hilfreich, um zu verstehen, was du vorhast.
Das hatten wir doch schon, aber @nobijohn kann besonders gut ignorieren! https://de.openoffice.info/viewtopic.ph ... 33#p302033 und folgende zwei Beiträge

Und ich hab eben keine Lust mich Zeile für Zeile durch 500 zeilen unaufgeräumten, aufgezeichneten Spaghetticode zu wühlen nur um den »Zielvorstellungen« von @nobijohn zu genügen ( »ZielVorstellung« ⇒ kaputte Eingangsdaten in eine ebenso kaputte Zielstruktur überführen )
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
mikeleb
*******
Beiträge: 1334
Registriert: Fr, 09.12.2011 16:50

Re: String teilen und in Variablen schreiben

Beitrag von mikeleb »

Hallo,
aus meiner Sicht wäre es zumindest sinnvoll, an der Struktur der Daten/Tabellenblätter zu arbeiten. Ganz wichtig wäre dabei, die Daten von der Auswertung zu trennen, also
- ein Tabellenblatt für den Import der Kunden-Artikel-Statistik aus der xlsx-Datei (Ist die wirklich so aufgebaut oder entstammen die Unmengen Leerzeichen der Anonymisierung?)
- ein Tabellenblatt für die (über Jahre) gesammelten Daten
- ein Tabellenblatt für die Auswertung/Aufbereitung der Daten (am einfachsten per Pivottabelle, ansonsten eine Formel-/Makrolösung)
(Das Ganze kommt natürlich irgendwann an Grenzen, an denen man dann zu einer Datenbanklösung übergehen würde.)
und schon sind "nur" noch drei Schritte zu gehen:
1) Import der xlsx-Daten
2) Anhängen der Datensätze an die gesammelten Daten (dazu wären einfach nur die Zellen von die Leerzeichen zu bereinigen)
3) Aktualiserung der Auswertung (selbst bei einer Formellösung müssen dann nicht Unmengen an Formeln neu eingetragen werden)
Gruß,
mikeleb
nobijohn
*
Beiträge: 19
Registriert: Do, 30.05.2024 00:30

Re: String teilen und in Variablen schreiben

Beitrag von nobijohn »

@mikeleb: Danke für deine konstruktiven Gedanken. Im Prinzip bin ich dabei genau das umzusetzen. 1) klar 2)Anhängen wird so einfach nicht gehen da die hinzugekommenen Daten zwischendrin verteilt sind. Die Leerzeichen müssen aus dem xlsx stammen. Würde auch erklären warum Ctrl + down nicht funktioniert. 3) Updates werden max. 1 mal pro Monat gemacht...
Ich werde einen Dummy vom Gesamten anfertigen und mit den Makros (entsprechend kommentiert) hochladen. Muss mich aber heute um die Druckerprobleme meiner Lady kümmern...

@Karolus: Mir Ignoranz vorzuwerfen halte ich nicht für angemessen. Das Makro ist längst nicht mehr so unaufgeräumt und auch von sinnfreien Präfixes (die du früher auch gern benutzt hast) befreit. Zusammengeklickter Kram fehlt auch. Bin trotz Alter noch lernfähig. Dass du dich nicht durch einen Haufen Spaghetti wühlen möchtest kann ich gut nachvollziehen, erwarte ich auch nicht. Und die Zielstuktur ist auch noch nicht kaputt.
Antworten