[GastForen Programmierung/Entwicklung AppleScript alle erste Werten von allen Listen in derListe

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

alle erste Werten von allen Listen in derListe

jekyll
Beiträge gesamt: 2039

28. Okt 2015, 16:53
Beitrag # 1 von 16
Bewertung:
(4443 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Allerseits,
ich bin bei dieser Aufgabe wieder stecken geblieben.
Ich würde gerne die jeder erste Wert von eine Liste von einer Liste anzeigen lassen.
Wie müsste dieser Formulierung aussehen?

Code
set liste1 to {"name1", "beruf", {"telefon1", "telefon2"}, {"stasse", "haus", "plz"}} 
set liste2 to {"name2", "beruf", {"telefon1", "telefon2"}, {"stasse", "haus", "plz"}}
set liste3 to {"name3", "beruf", {"telefon1", "telefon2"}, {"stasse", "haus", "plz"}}
set meineListen to {liste1, liste2, liste3}

set meinAuswahl to (choose from list first item of every list of meineListen with prompt "Verarbeitung" with title "Listen") as text


In würde gerne hier die name1, name2, name3 in der liste zum Auswahl haben.

So habe ich es auch probiert:
Code
set liste1 to {names:{"name1"}, beruf:{"beruf"}, tel:{"telefon1", "telefon2"}, adr:{"stasse", "haus", "plz"}} 
set liste2 to {names:{"name2"}, beruf:{"beruf"}, tel:{"telefon1", "telefon2"}, adr:{"stasse", "haus", "plz"}}
set liste3 to {names:{"name3"}, beruf:{"beruf"}, tel:{"telefon1", "telefon2"}, adr:{"stasse", "haus", "plz"}}
set meineListen to {liste1, liste2, liste3}

set meinAuswahl to (choose from list (every list of meineListen whose name is "names") with prompt "Verarbeitung" with title "Listen") as text

Danke schon mal
Gruß Sándor


Hier auf der HDS, kann jeder was dazu lernen, sogar die die glauben alles (besser) zu wissen Wink
Das sollten WIR ALLE unterstützen: http://www.hilfdirselbst.ch/...m.cgi?do=membership;

(Dieser Beitrag wurde von jekyll am 28. Okt 2015, 17:06 geändert)
X

alle erste Werten von allen Listen in derListe

Hans Haesler
  
Beiträge gesamt: 5816

28. Okt 2015, 19:04
Beitrag # 2 von 16
Beitrag ID: #544035
Bewertung:
(4382 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Sándor

versuche es bitte mal damit:

Code
set dialogListe to {} 
set liste1 to {"name1", "beruf", {"telefon1", "telefon2"}, {"strasse", "haus", "plz"}}
set liste2 to {"name2", "beruf", {"telefon1", "telefon2"}, {"strasse", "haus", "plz"}}
set liste3 to {"name3", "beruf", {"telefon1", "telefon2"}, {"strasse", "haus", "plz"}}
set end of dialogListe to item 1 of liste1
set end of dialogListe to item 1 of liste2
set end of dialogListe to item 1 of liste3

set meinAuswahl to (choose from list dialogListe with prompt "Verarbeitung" with title "Listen") as string

Gruss, Hans


als Antwort auf: [#544034]

alle erste Werten von allen Listen in derListe

jekyll
Beiträge gesamt: 2039

28. Okt 2015, 19:15
Beitrag # 3 von 16
Beitrag ID: #544036
Bewertung:
(4378 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
vielen Dank für die Antwort.

Ich habe gehofft die ganzen Liste als text of meineAuswahl zurück zu erhalten. Geht das auch oder braucht es eine repeat schleifen?
Gruß Sándor


Hier auf der HDS, kann jeder was dazu lernen, sogar die die glauben alles (besser) zu wissen Wink
Das sollten WIR ALLE unterstützen: http://www.hilfdirselbst.ch/...m.cgi?do=membership;


als Antwort auf: [#544035]

alle erste Werten von allen Listen in derListe

Hans Haesler
  
Beiträge gesamt: 5816

28. Okt 2015, 20:40
Beitrag # 4 von 16
Beitrag ID: #544038
Bewertung:
(4329 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Sándor,

in Deiner Anfrage schreibst Du

Zitat In würde gerne hier die name1, name2, name3 in der liste zum Auswahl haben.

Diese drei Strings werden von meinem Vorschlag angeboten.

Also ... ohne genau zu wissen, was Du vorhast ... vielleicht hilft dies:

Code
set dialogListe to {} 
set liste1 to {"name1", "beruf", "telefon1", "telefon2", "stasse", "haus", "plz"}
set liste2 to {"name2", "beruf", "telefon1", "telefon2", "stasse", "haus", "plz"}
set liste3 to {"name3", "beruf", "telefon1", "telefon2", "stasse", "haus", "plz"}
repeat with i from 1 to count of liste1
set end of dialogListe to item i of liste1
set end of dialogListe to item i of liste2
set end of dialogListe to item i of liste3
end repeat

set meinAuswahl to (choose from list dialogListe with prompt "Verarbeitung" with title "Listen") as string

Oder das:

Code
set dialogListe to {} 
set liste1 to {"name1", "beruf", "telefon1", "telefon2", "stasse", "haus", "plz"}
set liste2 to {"name2", "beruf", "telefon1", "telefon2", "stasse", "haus", "plz"}
set liste3 to {"name3", "beruf", "telefon1", "telefon2", "stasse", "haus", "plz"}

set AppleScript's text item delimiters to {", "}
set end of dialogListe to every item of liste1 as string
set end of dialogListe to every item of liste2 as string
set end of dialogListe to every item of liste3 as string
set AppleScript's text item delimiters to {""}

set meinAuswahl to (choose from list dialogListe with prompt "Verarbeitung" with title "Listen") as string

Aber für beide Lösungen müssen die beiden Listen (Telefonnummern und Adresse) in der Liste aufgelöst werden.

Gruss, Hans


als Antwort auf: [#544036]

alle erste Werten von allen Listen in derListe

kkauer
Beiträge gesamt: 661

28. Okt 2015, 22:25
Beitrag # 5 von 16
Beitrag ID: #544039
Bewertung:
(4277 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hans, Variante 1 ist definitiv kapøtt …


als Antwort auf: [#544038]

alle erste Werten von allen Listen in derListe

jekyll
Beiträge gesamt: 2039

30. Okt 2015, 20:09
Beitrag # 6 von 16
Beitrag ID: #544083
Bewertung:
(4157 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

Ich habe eine csv Datei in dem sind Kunden spezifische Daten so:

kunde1;kunde1Adr;kunde1InPfad;kunde1OutPfad monk;mcs, st, d;72,37.5,67.5
kunde2;kunde2Adr;kunde2InPfad;kunde2OutPfad;mcs, d, st;monk;65, 22.5, 52.5
kunde3;kunde3Adr;kunde3InPfad;kunde3OutPfad monk;mcs, st, d;72,37.5,67.5
kunde4;kunde4Adr;kunde4InPfad;kunde4OutPfad;mcs, d, st;monk;65, 22.5, 52.5

Ich hätte gerne mit den Choose from List mein Auswahl getroffen am liebsten so dass nur die Firmennamen angezeigt werden aber die ganzen Spezifikationen in den Variable gelesen werden wie hier:

Code
property firmenFile : "macHD:FirmList.csv" 

set meinListe to read file firmenFile using delimiter return from 1
set meineAuswahl to (choose from list meinListe with prompt "Verarbeitung" with title "Listen ") as text

Gruß Sándor


Hier auf der HDS, kann jeder was dazu lernen, sogar die die glauben alles (besser) zu wissen Wink
Das sollten WIR ALLE unterstützen: http://www.hilfdirselbst.ch/...m.cgi?do=membership;


als Antwort auf: [#544038]

alle erste Werten von allen Listen in derListe

Hans Haesler
  
Beiträge gesamt: 5816

30. Okt 2015, 21:31
Beitrag # 7 von 16
Beitrag ID: #544084
Bewertung:
(4127 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Sándor,

das Folgende sollte schon mal in die richtige Richtung gehen:

Code
property firmenFile : "macHD:FirmList.csv" 

set meinListe to read file firmenFile using delimiter return from 1

set dialogListe to {}

set AppleScript's text item delimiters to {";"}

repeat with n from 1 to count of meinListe
set end of dialogListe to (text item 1 of item n of meinListe)
end repeat

set AppleScript's text item delimiters to {""}

set meineAuswahl to item 1 of (choose from list dialogListe with prompt "Verarbeitung" with title "Listen ") as text

repeat with n from 1 to count of dialogListe
if item n of dialogListe is meineAuswahl then exit repeat
end repeat

set dResult to item n of meinListe

Jetzt muss noch etwas mit dem letzten Ergebnis gemacht werden.

Gruss, Hans


als Antwort auf: [#544083]

alle erste Werten von allen Listen in derListe

kkauer
Beiträge gesamt: 661

31. Okt 2015, 17:34
Beitrag # 8 von 16
Beitrag ID: #544090
Bewertung:
(4043 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Code
set meinListe to read file firmenFile using delimiter return from 1 

Das ist bzgl. Text-Encoding und den Zeilenenden evtl. problematisch. Das Beispiel kam ja direkt von Sándor, aber MacRoman als Encoding und CR als Zeilenende sind heute™ schon eher ungewöhnlich und mit anderen Varianten käme diese "Lösung" nicht klar.

Code
set meineAuswahl to item 1 of (choose from list dialogListe with prompt "Verarbeitung" with title "Listen ") as text 

"item 1 of" wirft einen Fehler wenn der Auswahldialog legitim abgebrochen wird! Ohne diesen "Trick" würde im Falle des gezielten Abbruchs des Auswahldialogs aber die Schleife durchlaufen werden und der letzte Eintrag der Liste käme als falsches Ergebnis zurück.


als Antwort auf: [#544084]
(Dieser Beitrag wurde von kkauer am 31. Okt 2015, 17:35 geändert)

alle erste Werten von allen Listen in derListe

jekyll
Beiträge gesamt: 2039

1. Nov 2015, 21:16
Beitrag # 9 von 16
Beitrag ID: #544111
Bewertung:
(3931 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
Vielen Dank,

ich dachte es gebe auch ne einfacheren Befehl in einer Zeile oder so, deshalb hatte ich thread eröffnet.
Aber so hast´s mir auch geholfen.

Ich habe mein Skript jetzt so umgeschrieben.

Code
property firmenFile : "macHD:FirmList.csv"  
set meinListe to read file firmenFile using delimiter return from 1

set dialogListe to {}

set AppleScript's text item delimiters to {";"}

repeat with n from 1 to count of meinListe
set end of dialogListe to (text item 1 of item n of meinListe)
end repeat

set AppleScript's text item delimiters to {""}
try
set meineAuswahl to item 1 of (choose from list dialogListe with prompt "Verarbeitung" with title "Listen ")
on error
set meineAuswahl to 0
end try

if meineAuswahl is not 0 then
repeat with n from 1 to count of dialogListe
if item n of dialogListe is meineAuswahl then exit repeat
end repeat
set dResult to item n of meinListe
else
activate application "Script Debugger"
end if

Gruß Sándor


Hier auf der HDS, kann jeder was dazu lernen, sogar die die glauben alles (besser) zu wissen Wink
Das sollten WIR ALLE unterstützen: http://www.hilfdirselbst.ch/...m.cgi?do=membership;


als Antwort auf: [#544084]

alle erste Werten von allen Listen in derListe

Hans Haesler
  
Beiträge gesamt: 5816

1. Nov 2015, 23:02
Beitrag # 10 von 16
Beitrag ID: #544112
Bewertung:
(3887 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Sándor,

wenn der Anwender auf den "Abbruch"-Button klickt, ist das Ergebnis false.

Deshalb ist es üblich, das Ergebnis zu testen und bei einem false mit error number -128 die Ausführung abzubrechen.

Code
set dialogErgebnis to (choose from list dialogListe with prompt "Verarbeitung" with title "Listen") 
if dialogErgebnis is not false then
set meineAuswahl to dialogErgebnis as string
else
error number -128
end if

repeat with n from 1 to count of dialogListe
if item n of dialogListe is meineAuswahl then exit repeat
end repeat

set dResult to item n of meinListe


Gruss, Hans


als Antwort auf: [#544111]

alle erste Werten von allen Listen in derListe

kkauer
Beiträge gesamt: 661

2. Nov 2015, 20:43
Beitrag # 11 von 16
Beitrag ID: #544145
Bewertung:
(3781 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Hans Haesler ] Deshalb ist es üblich, das Ergebnis zu testen und bei einem false mit error number -128 die Ausführung abzubrechen.

"false" wird doch "geliefert" und/aber du testest und generierst (d)ein eigenes "false". Warum ist das empfehlenswert?


als Antwort auf: [#544112]
(Dieser Beitrag wurde von kkauer am 2. Nov 2015, 20:44 geändert)

alle erste Werten von allen Listen in derListe

Hans Haesler
  
Beiträge gesamt: 5816

3. Nov 2015, 07:34
Beitrag # 12 von 16
Beitrag ID: #544146
Bewertung:
(3716 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Karsten,

ich ziehe es vor, die Ausführung abzubrechen. Sonst muss der Rest des Codes mit if / end if umgeben werden.
Und das sind meistens mehr als nur die vier Zeilen im aktuellen Beispiel.

Code
set meineAuswahl to (choose from list dialogListe with prompt "Verarbeitung" with title "Listen") 

if meineAuswahl is not false then
repeat with n from 1 to count of dialogListe
if item n of dialogListe is meineAuswahl as string then exit repeat
end repeat
set dResult to item n of meinListe
end if

Gruss, Hans


als Antwort auf: [#544145]

alle erste Werten von allen Listen in derListe

kkauer
Beiträge gesamt: 661

3. Nov 2015, 20:05
Beitrag # 13 von 16
Beitrag ID: #544183
Bewertung:
(3653 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Hans Haesler ] ich ziehe es vor, die Ausführung abzubrechen.

Latürnich, aber ein legitimer Abbruch ist doch kein Fehler und false ist false ;)

Antwort auf: Sonst muss der Rest des Codes mit if / end if umgeben werden.
Und das sind meistens mehr als nur die vier Zeilen im aktuellen Beispiel.

Ich übersehe da bestimmt etwas, aber wäre ein Einzeiler wie
Code
if meineAuswahl is false then return 

nicht ausreichend?

Deine Präferenz resultiert evtl. aus "komplexeren" Projekten, dennoch ist ein Abbruch für mich kein Fehler …


als Antwort auf: [#544146]
(Dieser Beitrag wurde von kkauer am 3. Nov 2015, 20:05 geändert)

alle erste Werten von allen Listen in derListe

Hans Haesler
  
Beiträge gesamt: 5816

3. Nov 2015, 20:54
Beitrag # 14 von 16
Beitrag ID: #544184
Bewertung:
(3633 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Mein lieber Karsten ...,

stimmt, 'return' wäre hier ausreichend.
Aber ich verwende nun mal lieber den expliziten Abbruch-Befehl.
Ein 'return' setze ich ein, wenn der Aufruf ein Ergebnis erwartet.

Gruss, Hans


als Antwort auf: [#544183]

alle erste Werten von allen Listen in derListe

kkauer
Beiträge gesamt: 661

3. Nov 2015, 21:33
Beitrag # 15 von 16
Beitrag ID: #544185
Bewertung:
(3603 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Hans Haesler ] Mein lieber Karsten ...,

stimmt, 'return' wäre hier ausreichend.
Aber ich verwende nun mal lieber den expliziten Abbruch-Befehl.
Ein 'return' setze ich ein, wenn der Aufruf ein Ergebnis erwartet.

Gruss, Hans


???

Wir können/sollten das ggf. separat erörten, denn ich verstehe deine Ansätze und Argumentationen leider nicht …

Und noch einmal: Ein Abbruch ist doch kein Fehler!


als Antwort auf: [#544184]
(Dieser Beitrag wurde von kkauer am 3. Nov 2015, 21:43 geändert)
X

Aktuell

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/

Veranstaltungen
01.03.2023 - 09.03.2023

Online
Mittwoch, 01. März 2023, 00.00 Uhr - Donnerstag, 09. März 2023, 00.00 Uhr

Online Webinar

Wie gehen wir mit diesen Veränderungen um? Was ist notwendig, damit wir die Digitalisierung im Unternehmen klappt? Veränderungsprozesse verstehen und entsprechend handeln Mitarbeiter als Botschafter Webseite mit WordPress erstellen SEA /SEO (Ads aufschalten)

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: B. Isik, E-Mailinfo AT snfa DOT ch

https://www.fernstudiumfitness.ch/digitalisierung-schweiz/