BinaryWorks.it Official Forum
Home
|
Profile
|
Active Topics
|
Members
|
Search
|
FAQ
All Forums
eXtreme Movie Manager 8, 9, 10 Forum
Scripts
IMDb API & Web Scraping
Note:
Only the poster of this message, and the Moderator can edit the message.
Screensize:
640 x 480
800 x 600
1024 x 768
1280 x 1024
UserName:
Password:
Format Mode:
Basic
Help
Prompt
Format:
Font
Andale Mono
Arial
Arial Black
Book Antiqua
Century Gothic
Comic Sans MS
Courier New
Georgia
Impact
Lucida Console
Script MT Bold
Stencil
Tahoma
Times New Roman
Trebuchet MS
Verdana
Size
1
2
3
4
5
6
Color
Black
Red
Yellow
Pink
Green
Orange
Purple
Blue
Beige
Brown
Teal
Navy
Maroon
LimeGreen
Message:
* HTML is OFF
*
Forum Code
is ON
Smilies
Das Grundmuster ist: [code] foreach (var item in list) { ... } [/code] Das entspricht dieser for-Schleife: [code] for (i = 0; i < list.Count; i++) { var item = list[ i ]; // ohne Leerzeichen in den Klammern, aber wg. Forencode kursiv sonst hier nicht darstellbar ... } [/code] Also ähnlich deinem Delphi-Code, foreach ist halt nur lesbarer und schneller geschrieben, loopt aber im Grunde genau wie bei einer for-Schleife jeden Eintrag in einem IEnumerable (also einer Liste, Array usw.) durch und man hat direkt den Eintrag ohne ihn nochmals per Index aus der Liste zuweisen zu müssen. Konkret zu den alternateTitles: [code] foreach (AlternateTitle alternateTitle in alternateTitles) { ... } [/code] - AlternateTitle: das deklariert den [b][red]Typ[/red][/b] des einzelnen Eintrags, hier ist jeder Eintrag vom Typ der [b][red]Klasse AlternateTitle[/red][/b] (du kannst auch "[red]var[/red]" schreiben, weil der Compiler den Typ des Einzeleintrags aus der Liste bestimmen kann) - alternateTitle: das deklariert den [b][red]Name der Variable des einzelnen Eintrag[/red][/b] (den du dann [b][red]innerhalb[/red][/b] der Schleife verwendest) - alternateTitles: der [b][red]Variablenname der Liste[/red][/b] (der [b][red]außerhalb vor[/red][/b] dem Aufruf der Schleife natürlich bereits bekannt sein muss) Wenn es für dich einfacher ist, kannst du also auch schreiben: [code] foreach (var eintrag in alternateTitles) { ... MessageBox.Show(eintrag.Title); // Ausgabe der Eigenschaft "Title" des Eintrags in einem Popup ... } [/code] [quote][i]Originally posted by JDommi[/i] Und wie müsste diese Passage korrekt sein, um nicht nur die Anzahl zu bekommen, sondern direkt den CompanyName. [code] sbExport.AppendLine("---Production Companies"); foreach (Company company in companies.Production) { sbExport.AppendLine($"{companies.Production.Count}"); } [/code] [/quote] Sieh dir das zugehörige Bild an (oder mal selbst im Debugger): [url]https://github.com/tardezyx/tar.IMDbScraper/blob/main/Images/AllCompanies.png[/url] Die Listen innerhalb von allCompanies sind alle identisch aufgebaut, weil sie alle vom selben Typ sind. D.h. die Struktur innerhalb von [b]Production[/b] ist dieselbe wie innerhalb der aufgeklappten [b]SpecialEffects[/b]. Beim aufgeklappten Eintrag siehst du dessen Eigenschaften. Was du möchtest, ist die Eigenschaft "Name". Also kannst du bspw. das schreiben: [code] foreach (var eintrag in companies.Production) { sbExport.AppendLine(eintrag.Name); } [/code] Und noch was: Falls dich das mit dem sbExport und dem $-Zeichen verwirrt, nimm einfach einen String und bau den selbst zusammen. Das kostet mehr Speicher usw., aber ist für dich zum Verständnis wahrscheinlich leichter. Also [code] string exportText = ""; // ein leerer String, den wir nach und nach füllen string zeilenumbruch = "\r\n"; // ein Carriage-Return und Line Feed (also kurz: ein Zeilenumbruch) // Vor einem speziellen Sonderzeichen bzw. einem Befehls-Charakter muss ein Escape-Charakter vorangestellt werden // Der Escape-Charakter in C# ist ein umgekehrter Schrägstrich, daher \r für Carriage-Return foreach (var eintrag in companies.Production) { exportText += eintrag.Name + zeilenumbruch; // beachte das += (damit fügen wir dem vorhandenen Text etwas hinzu) } ... string backslash = "\\"; // der umgekehrte Schrägstrich (mit vorangestelltem Escape-Schrägstrich, daher doppelt) string path = tbxFolder.Text + backslash + imdbID + ".txt"; File.WriteAllText(path, exportText); [/code] Ich hoffe, es wird langsam klarer. Statt "\r\n" kannst du übrigens auch Environment.NewLine nehmen ;)
Check here to include your profile signature.
BinaryWorks.it Official Forum
© Binaryworks.it
Generated in 0.03 sec.