problem mit "time" einfügen



  • PAD schrieb:

    Bei dem was du gepostet hast, ging zumindest ich davon aus dsd C-grundlagen da sind

    ...da ging ich auch von aus 😞

    Allerdings ist st nicht LPSYSTEMTIME, sondern SYSTEMTIME (den Pointer übergeb ich ja mit dem &st an GetLocalTime(&st))

    Ansonsten sieht das gut aus...



  • @Hepi 😃 stimmt, hatte den Variablentyp aus der MS Hilfe einfach kopiert und das & Zeichen übersehen 😃



  • danke euch beiden und sorry das ich euren erwartungen nicht gerecht geworden bin. hab erst vorkurzem mit dem thema angefangen.

    jedenfalls hab ich euren code jetzt soweit "bearbeitet" das nur noch eine fehlermeldung kommt. und zwar hat er ein problem mit der geschweiften klammer über char *[C++ Fehler] ping.cpp(144): E2141 Fehler in der Deklarationssyntax
    *der hatte vorher noch mehr fehler gemeldet,pAdress mochte er nicht mehr, als ich unter return 0; die geschweifte klammer weggenommen hab, kommt jetzt nur noch die eine fehlermeldung.



  • @Haudegen

    diese Func1 war ein Beispiel wie man die von dir gesuchten Teile nutzt.

    Du sollst nicht dies Funktion includen, sondern in deinen bestehenden Code die Änderungen vornehmen
    d.h.
    --> am Begin des Funktionsbodys die 2 Variablen st und szBuffer deklarieren
    --> an der stelle wo in deinem Code das if vorkommt, diese Stücke an der richtigen Stelle hinzufügen.
    --> Mit GetLocal... bekommst du die aktuelle Zeit in st geliefert, muß im if sein damit die Zeit genommen wird zu der du in dem if bist.
    --> Das sprintf kann unmittelbar folgen.
    --> dein pStrings->Add muß an der Stelle sein wo du deine Informationen vollständig hast.

    danke euch beiden und sorry das ich euren erwartungen nicht gerecht geworden bin. hab erst vorkurzem mit dem thema angefangen.

    👍 Du brauchst sich nicht zu entschuldigen, du hattest nur nicht erwähnt das du Anfänger bist. Somit passten die
    Antworten zum Code und nicht zu deinem Wissensstand.

    Viel Spaß und frag bitte weiter
    PAD



  • danke für deine hilfe PAD. werd mich erstmal ne weile damit noch beschäftigen. denn irgendwie muss ich ja mal was lernen. kann ja nicht die ganze zeit euch fragen.
    wenn ich absolut nicht mehr weiter komme, dann meld ich mich hier noch mal!

    hab jetzt schon probleme die variablen zu deklarieren 😞 (peinlich!!!) aber das will ich alleine lösen!!!

    bye euer Haudegen



  • 😞 da bin ich wieder.

    hab da jetzt mal n kleines bisserl rumgebastelt. hab nur noch ein problem mit szProtokoll, ich bekomme es einfach nicht definiert.
    hier erstmal der code

    #include <vcl.h>
    #pragma hdrstop
    #include <winsock.h>
    #include "ping.h"
    #include <conio.h>
    #include <windows.h>
    #include <stdio.h>
    #include <iostream.h>
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    //das steht in meinem header (???), ich schreib das hier weil ich irgendwas in der hilfe mal gesehen hab zwecks #include + szBuffer.
    
    VOID GetLocalTime(LPSYSTEMTIME lpst)
      char* szProtokoll = new char[100+1];
      SYSTEMTIME st;
    
      if(pStrings)
        GetLocalTime(&st);
    sprintf(szProtokoll, "%02d.%02d.%04d %02d:%02d:%02d | ", st.wDay, st.wMonth, st.wYear, st.wHour, st.wMinute, st.wSecond);
        pStrings->Add(AnsiString(szProtokoll) + "Ping an " + AnsiString(pHost->h_name) + "[" +
          AnsiString(inet_ntoa((*(LPIN_ADDR)pHost->h_addr_list[0]))) + "]");
    

    so und nun noch die fehlermeldungen, die ich im obenstehenden code abschnitt bekomme.
    [C++ Fehler] ping.cpp(145): E2141 Fehler in der Deklarationssyntax -> bei "char* szProtokoll...." zu finden
    [C++ Fehler] ping.cpp(149): E2451 Undefiniertes Symbol 'szProtokoll'
    für hilfe und änderungsvorschläge wäre ich sehr dankbar.
    mfg
    euer Haudegen



  • Hi,
    fehlt bei der funktionsdeklaration nicht ne geschweifte Klammer ?



  • mag sein aber wenn ich es so mache

    VOID GetLocalTime(LPSYSTEMTIME lpst)
      {
       char* szProtokoll = new char[100+1];
        SYSTEMTIME st;
    
      if(pStrings)
        GetLocalTime(&st);
    sprintf(szProtokoll, "%02d.%02d.%04d %02d:%02d:%02d | ", st.wDay, st.wMonth, st.wYear, st.wHour, st.wMinute, st.wSecond);
        pStrings->Add(AnsiString(szProtokoll) + "Ping an " + AnsiString(pHost->h_name) + "[" +
          AnsiString(inet_ntoa((*(LPIN_ADDR)pHost->h_addr_list[0]))) + "]");
        }
    

    dann mag er die geschweifte klammer über char* nicht und er mag dann noch eine andere stelle im gesamten code nicht mehr.
    [C++ Fehler] ping.cpp(146): E2141 Fehler in der Deklarationssyntax
    [C++ Fehler] ping.cpp(177): E2451 Undefiniertes Symbol 'pAddress'
    -> bisserl weiter unten im code



  • Warum änderst du szProtokoll ab funktionierte es nich?

    char szProtokoll[100+1]; //Damit erzeugst du einen String der 100 Zeichen speichern kann
    //das +1 ist eine Marotte von mir um den üblichen Fehler zu vermeiden
    //das für die shließende Null kein Platz mehr da ist

    Dynamische Allokierung ist ein sinnvolle Methode, wenn ich aber eine so kurze Routine habe kann ich eine temporäre Variable ruhig auch statisch anlegen. Die Zeit es auf dem Stack für die Lebensdauer dieser Routine ist deutlich kürzer als eine new delete Pärchen, speziell wenn man das delete vergisst. Typischer Fehler eine Routine hat an zwei oder mehr Stellen ein return stehen, das
    heißt an jedem return müsste ein deletes stehen.

    Hast du dier mal überlegt wie groß der Inhalt werden kann?
    Die 100 ist einfach eine Buffergröße die ich verwende wenn ich mir keine Gedanken über die Größe machen möchte.

    Wenn man soviel Gedanken reinsteckt es dynamisch zu erzeugen sollte man überlegen wie groß es maximal werden kann um nicht zu viel Speicher zu verbrauchen.

    Und wenn du es dynamisch machen willst wo ist das zugehörige delete?

    Wenn du aber schon anfängst eigene Sachen in C++ zu lösen, nimm doch die Objektorientierung mit Konstruktoren (Ctor) und Destruktoren (Dtor) direkt mit.



  • was du geschrieben hast scheint er zu mögen aber 1. hat er nen fehler bei char zwecks deklarationssyntax, wenn ich da ne geschweifte klammer setze dann schreit er weiter unten im code rum und 2. mag er szProtokoll nicht. hab nu keine ahnung was er da von mir haben will besser gesagt was ich da machen soll.
    er sagt dann halt immer, undefiniertes symbol 'szProtokoll'. ich weis net, wie ich ihm das definieren soll.

    hab jetzt mal den code im 1. post geuppt, so wie ich ihn jetzt hab.



  • 1. Ich würde void klein schreiben
    2. Da du die Winapi Funktion GetLocalTime(&st) benutzt kannst du deine eigene Funktion nicht genauso nennen.
    3. Bitte schau dir mein Posting vom 28.07 23:10 noch einmal genau an.
    4. Tutorials für C / C++ sind was tolles


Anmelden zum Antworten