Absoluter Beginner !!!

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Absoluter Beginner !!!

    Hallo zusammen,

    ich bin absoluter Neuling was PC oder Mac Programmierung angeht!

    Gut auf Arbeit habe ich nur mit Speicherprogrammierbaren Steuerungen zu tun (SPS) oder Simotion. (Da schreckt mich dann auch nicht die Programmierung in SCL oder MMC nicht)!

    Aber irgendwie habe ich Probleme mit Objektive-C zurecht zu kommen! Wie muss ich eine Variable deklarieren und Initialisieren? Wann und wie eine Klasse und vor allem Wo ? ist die main.m immer in jedem Proramm dabei ?? Irgendwie drehe ich mich im Kreis ???

    Ich kriege es fertig dass ich Strings in ein NSTextField eingebe und diese über Variablen wieder in verschiedenen Labels wieder ausgebe in einem Fenster!

    nur was soll das bedeuten (ich habe ein Buch für Objektive-C gekauft -- Cocoa Programmierung für MAC OS X in dem steht das auf Seite 116 unten) :

    Methoden der Klasse NSString :

    - (int) length; (diese Methode möchte ich verwenden und kriege sie nicht zum laufen!!!)

    und

    + (NSString *) stringWithFormat:(NSString *) , ...;

    soweit habe ich das schon mal ich speichere meine Variable eingabe die mit dem NSTextField verknüpft ist in einer varEingabe soweit funktioniert das :

    Quellcode

    1. NSString *varEingabe = [[NSString alloc] init];varEingabe = [eingabe stringValue];


    nur wie bekomme ich die oben genannte Methode (int) length jetzt ausgeführt ??? Ich hab schon alles probiert und nichts klappt! Muss ich erst mir eine Variable erstellen mit NSNumber oder sonst was ? Ich weis nicht mehr weiter und würde mich freuen wenn mir jemand helfen könnte.

    Vielen Dank für euere Hilfe
    SIEMENS STEP 5/7 und SIMOTION SCOUT ist meine Welt!
  • Ich kann dir die Videos von x02100.de/ empfehlen. Mach von Folge 1 an alles durch, geht recht locker und arbeite dabei mit. Ist zwar zeitlich etwas Aufwand, aber es lohnt sich.
    In deinem Buch ist das nicht erklärt?

    Quellcode

    1. NSString *varEingabe = [[NSString alloc] init]
    ist übrigens ein sinnloser Befehl. Damit weist du der Variablen einen leeren String zu. Allerdings kann man einen NSString nicht verändern. Deswegen nimmt man immer irgendein initWith...
  • In deinem varEingabe, wird nur eine Speicheradresse gespeichert. Mit alloc init erzeugst du ein neues Objekt, und legst dessen Adresse in „varEingabe“. Danach ersetzt du diese Adresse mit der des Eingabe Textes. -> Das alloc init könntest du dir sparen(ausserdem ist das ein Leak). Dafür evtl. ein noch an varEingabe ein retain senden.

    Wenn du in die Documentation schaust (immer zu emfehlen), dann steht da:
    length
    Returns the number of Unicode characters in the receiver.

    - (NSUInteger)length
    Return Value
    The number of Unicode characters in the receiver.

    Vorallem ist das „Gibt die Anzahl der Zeichen im Emfänger zurück“ wichtig. Also sendest du die Methode an eine Instanz abgeleitet von NSString um deren Länge zu bekommen. varEingabe enthält ja die Adresse einer NSStringinstanz. Somit: [varEingabe length]. Die Rückgabe solltest du ja auch irgendwie nutzen, also entweder machst du es wie AR.DDev, oder fängst sie erstnoch ab:

    Quellcode

    1. NSString *varEingabe;
    2. varEingabe = [[eingabe stringValue] retain]; //wir registrieren uns als Owner
    3. unsinged int stringLength = [varEingabe length];
    4. [varEingabe release]; // wir brauchen varEingabe nicht mehr
    5. varEingabe = nil //optional
    6. NSLog(@"length: %ui", stringLength);


    Hoffe das hilft dir.
    Gruß David
  • Vielen Dank für eure Hilfe!

    Ich sehe schon das wird noch ein langer steiniger Weg bis ich das verinnerlicht habe!

    für mich ist das alles nicht ganz logisch ... im Moment jedenfalls noch nicht!

    vor allem mit dem ganzen Klammern !! wann eckig wann rund?? ich erkenne noch kein System dahinter! die geschweiften sind die einfachsten !!! beginn und ende einer funktion!

    Von der Speicherverwaltung will ich noch gar nicht reden! Was für ein Glück muss man sich in bei den Siemens Steuerungen nicht damit rumschlagen! Da ist klar (in SCL) oben werden die Variablen deklariert (ob IN, OUT, INOUT, STATISCH, KONSTANT, oder TEMP) und dann kann man los legen! ;)

    Warum muss das nur so kompliziert sein !

    Trotzdem euch allen vielen vielen Dank !!

    Grüße Christian
    SIEMENS STEP 5/7 und SIMOTION SCOUT ist meine Welt!
  • Sepherl2010 schrieb:


    vor allem mit dem ganzen Klammern !! wann eckig wann rund?? ich erkenne noch kein System dahinter! die geschweiften sind die einfachsten !!! beginn und ende einer funktion!

    (): beim Klammern von Formeln: (2+3)*5, bei Funktionsaufrufen: machwas(4711) oder bei der Definition von Methoden: - (Ergebnistyp) methode:(Parametertyp *) parameter
    []: beim Aufruf von Methoden: [objekt methode]
    {}: bei Funktionen oder if oder Schleifen: while (i < 10) { machwas(i); i++ }

    Es gibt noch ein paar mehr Fälle, aber das sind bei Obj-C glaube ich die Wichtigsten.

    Klammerungen können meistens geschachtelt werden -> funktion1(funktion2(x)), [[objekt] methode1] methode2]
  • hns schrieb:

    []: beim Aufruf von Methoden: [objekt methode]

    oder beim Zugriff auf Arrayelemente: array[27]

    hns schrieb:

    {}: bei Funktionen oder if oder Schleifen: while (i < 10) { machwas(i); i++ }

    Allgemeiner ausgedrückt: Geschweifte Klammern umschließen Blöcke. Das sind entweder mehrere Anweisungen oder die Attribute von struct, union oder interface. Anweisungsblöcke lassen sich übrigens auch ohne Kontrollbedingung beliebig schachteln:

    Quellcode

    1. int main(int argc, char **argv) {
    2. {
    3. {
    4. {
    5. printf("Hello, world!");
    6. }
    7. }
    8. }
    9. }
    „Meine Komplikation hatte eine Komplikation.“
  • Sepherl2010 schrieb:

    Ich sehe schon das wird noch ein langer steiniger Weg bis ich das verinnerlicht habe!

    für mich ist das alles nicht ganz logisch ... im Moment jedenfalls noch nicht!

    vor allem mit dem ganzen Klammern !! wann eckig wann rund?? ich erkenne noch kein System dahinter! die geschweiften sind die einfachsten !!! beginn und ende einer funktion!

    Von der Speicherverwaltung will ich noch gar nicht reden! Was für ein Glück muss man sich in bei den Siemens Steuerungen nicht damit rumschlagen! Da ist klar (in SCL) oben werden die Variablen deklariert (ob IN, OUT, INOUT, STATISCH, KONSTANT, oder TEMP) und dann kann man los legen! ;)

    Warum muss das nur so kompliziert sein !

    Trotzdem euch allen vielen vielen Dank !!

    Grüße Christian
    Es ist ein steiniger Weg. Auch ich bin gerade auf diesem. Ich hatte, außer Erfahrung mit dem uralten GFA Basic, zuvor keine Kenntnisse und Berührungen mit Programmierung oder gar C und C++. Im Nachhinein glaube ich, war dies sogar ein Vorteil. Denn in Objective-C einzusteigen ohne C-Kenntnisse halte ich mittlerweile für vorteilhafter als umgekehrt. Hingegen haben mich die rudimentären Basic-Kenntnisse schnellervorangebracht, denn so etwas wie Kontrollstrukturen gibt es ja in faktisch jeder noch so einfachen Programmiersprache. Allerdings ist es extrem wichtig die richtige Literatur zu erwischen. Viele schwören ja auch auf A.Hillegast und sein Buch. Muss aber sagen, dass man da ohne C-Kenntnisse eigentlich auch schon recht schnell Bahnhof versteht.
    Ich empfehle, wie auch schon jemand hier zuvor, einfach mal die Podcasts Xcode von null auf hundert anzusehen. Ich garantiere, dass Dir spätestens nach Kapitel 7 ein LIcht aufgeht und nebenbei kann man praktisch Beispiele erarbeiten. Ich glaube ohne diesen Podcast wäre ich nie in Objective-C reingekommen. Obwohl ich etliche Bücher probiert habe, dieser Podcast ist die Erleuchtung für alle Programmieranfänger! Und wenn Du den Podcast durch hast, dann wirst DU auch entsprechende Literatur verstehen. Es muss halt erstmal der Knoten platzen und es gibt keinen besseren Weg wie den beschriebenen wie ich meine.

    P.S. Ich versichere Dir das Du spätestens nach Teil 7 sowohl weißt was Kontrollstrukturen, Methoden, Klassen etc. sind, wann Du welche Klammern setzen musst, was im Groben MCV ist (das brauchst Du später) und wie die Speicherverwaltung im Sinne der Objektverwaltung grob zu verstehen ist (ist total einfach, mann muss sich Kapitel 7 einfach nur mal ansehen, notfalls auch 2-3mal).

    Richtig harter Tobak kommt dann ab Folge 9. Ich wage zu behaupten, dass sich mit dieser Folge dann die Spreu vom Weizen trennt. Spricht, hier wird sich der zeigen, wer Durchhaltevermögen hat und wer nach dem ersten ansehen die Lappen schmeißt und mit rauchendem Kopf die wehenden Fahnen zeigt. Also erstmal Tapfer Folge 1-8 durchziehen, dann einen abend mit völliger Ruhe und freiem Kopf aussuchen und Folge 9 ansehen...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Labecula ()