Zum Inhalt springen

TDM

Mitglieder
  • Gesamte Inhalte

    1804
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von TDM

  1. TDM

    Textdatei ausgeben

    Warum öffnest du die Datei dann zum Schreiben, wenn du nur lesen willst?
  2. Wenn du mir jetzt noch sagst, was orginal für ein Typ ist ... Denn die oben genannte Methode heißt SaveAs und nicht Save.
  3. Dass bei einem Element, das Element nicht be-free-t wird. Wurde jetzt aber nochmal geändert, da es jetzt mit dem C-Compiler klappt. Nein, da das ja nur eine Hilfestellung für den Threaderöffner sein soll, werde ich da nicht jede Kleinigkeit ausbessern/anschauen. Wieder was gelernt - als c übersetzt, geht: Header #include <stdlib.h> typedef struct SUser { char name [40]; //* Datenteil void *prev; void *next; } SUser, *PUser; PUser createNewUser(const char *name) { PUser ret = malloc(sizeof(SUser)); strcpy(ret -> name, name); ret -> prev = NULL; ret -> next = NULL; return ret; } PUser getTail(PUser list) { PUser tail = list; while (tail -> next != NULL) tail = tail -> next; return tail; } PUser getHead(PUser list) { PUser head = list; while (head -> prev != NULL) head = head -> prev; return head; } void deleteList(PUser list) { PUser head = getHead(list); PUser buffer = head; int checkOnly = (buffer->next == NULL); while (buffer != NULL) { buffer = buffer -> next; if (buffer == NULL) break; free(buffer -> prev); buffer -> prev = NULL; } if (checkOnly) free(head); head = NULL; list = NULL; } void addUserAtEnd(PUser list, PUser item) { PUser tail = getTail(list); tail -> next = item; item -> prev = tail; } Main (diesmal .c) int main(int argc, char* argv[]) { PUser user1 = createNewUser("Benutzer1"); PUser user2 = createNewUser("Benutzer2"); PUser user3 = createNewUser("Benutzer3"); PUser buffer = user1; int i = 1; addUserAtEnd(user1, user2); addUserAtEnd(user1, user3); while (buffer != NULL) { printf("%d:\t%s\n", i, buffer->name); buffer = buffer -> next; i++; } deleteList(user1); getchar(); return 0; } Jetzt weiß ich wieder, warum ich C nicht mag, da muss man alle Variablen in einer Funktion als erstes deklarieren...
  4. hmm, ok bei nur einem Element in der Liste gabs einen Fehler... void deleteList(SUser *list) { SUser *head = getHead(list); SUser *buffer = head; while (buffer != NULL) { buffer = buffer -> next; if (buffer == NULL) break; free(buffer -> prev); buffer -> prev = NULL; } free(head); head = NULL; list = NULL; }
  5. Du speicherst die Datei sicher auch immer, ja?! Hast du relative oder absolute Pfade?
  6. Da ich nur C++-Projekte anlegen kann, kann ich die Dateien zwar umbenennen, aber diese werden trotzdem als C++ kompiliert. Ist ja auch egal. Konstruktoren bei Strukturen gibt es nicht?! Ich dächte ich hätte letztens sowas in einem Linux-Kernel irgendwo gesehen... Naja egal, dann halt anders... Header: #include <stdlib.h> typedef struct SUser { char name [40]; //* Datenteil SUser *prev; SUser *next; } Nutzer; SUser* createNewUser(const char *name) { SUser* ret = (SUser*) malloc(sizeof(SUser)); strcpy(ret -> name, name); ret -> prev = NULL; ret -> next = NULL; return ret; } SUser* getTail(SUser *list) { SUser *tail = list; while (tail -> next != NULL) tail = tail -> next; return tail; } SUser* getHead(SUser *list) { SUser *head = list; while (head -> prev != NULL) head = head -> prev; return head; } void deleteList(SUser *list) { SUser *buffer = getHead(list); while (buffer != NULL) { buffer = buffer -> next; if (buffer == NULL) return; free(buffer -> prev); buffer -> prev = NULL; } } void addUserAtEnd(SUser *list, SUser *item) { SUser *tail = getTail(list); tail -> next = item; item -> prev = tail; } Main: int main(int argc, char* argv[]) { Nutzer *user1 = createNewUser("Benutzer1"); Nutzer *user2 = createNewUser("Benutzer2"); Nutzer *user3 = createNewUser("Benutzer3"); addUserAtEnd(user1, user2); addUserAtEnd(user1, user3); Nutzer *buffer = user1; for (int i = 1; buffer != NULL; i++) { printf("%d:\t%s\n", i, buffer->name); buffer = buffer -> next; } deleteList(user1); getchar(); return 0; }
  7. Nein, da ich hier nur Visual Studio hab (und das komischerweise immer Cpp Dateien erzeugt) ist das halt eine cpp, dürfte aber nicht weiter stören, da der Code reines C ist. (Falls der Konstruktor des structs nicht im Standard ist, kann man das auch in eine Funktion [in der man wiederrum malloc benutzt] auslagern...)
  8. Alles in die Main packen, macht die Sache nicht gerade übersichtlich... Nur mal so als Beispiel: UserList.h typedef struct SUser { SUser() { prev = NULL; next = NULL; } char name [40]; //* Datenteil SUser *prev; SUser *next; } Nutzer; void addUserAtEnd(SUser *list, SUser *item) { SUser *tail = list; while (tail -> next != NULL) tail = tail -> next; tail -> next = item; item -> prev = tail; } UserList.cpp #include <stdio.h> #include <string.h> #include "UserList.h" int main(int argc, char* argv[]) { Nutzer user1; strcpy(user1.name, "Benutzer1"); Nutzer user2; strcpy(user2.name, "Benutzer2"); addUserAtEnd(&user1, &user2); Nutzer *buffer = &user1; for (int i = 1; buffer != NULL; i++) { printf("%d:\t%s\n", i, buffer->name); buffer = buffer -> next; } getchar(); return 0; } Die Instanziierung kann man natürlich auch einfach mit malloc ersetzen (ich mags ehrlich gesagt nicht) und das funktioniert soweit, dass ich in der Liste beliebig viele Benutzer hinzufügen kann. Aus der Datei laden und Benutzer abspeichern wirst du ja sicher selbst hinkriegen...
  9. Tut mir leid, Trollposts will ich nicht machen, sondern nur meine Meinung vertreten. ... und legitim widerrufen vom Bundesverfassungsgericht [Edit] Weil ichs grad in dem Link seh - mir ging es mehr um willkürliche Durchsuchung, aber da ja dort steht nur mit triftigen Grund hätte sich die Diskussion ja auch erledigt.
  10. Nein, aber das gehört ja irgendwo zusammen. Dass ich das nicht muss ist klar, bei anderen geh ich aber auch so vor, dass der Angreifer außer Gefecht geschaltet wird. Irgendwo bin ich es leid, tausende Angriffe nur mit passiven Mitteln zu verhindern. Das Widerstandsrecht beschreibt ja nur, dass jemand Widerstand gegen jemanden leistet, der gegen bestehende Gesetze handelt. Wenn dies der Staat selber ist dann bitte... Widerstandsrecht ? Wikipedia (Womöglich hab ichs auch falsch interpretiert.)
  11. Nochmal: Woher weiß ich, DASS sie vom BKA durchgeführt wird? Und das Recht auf Verweigerung von Gesetzen steht im Grundgesetz.
  12. Gut, ich definiere es anders: Wenn der Staat irgendwas bei mir durchsuchen will, muss er richterlich dazu berechtigt sein und mir seine Berechtigung zeigen. Das ist bei einer Hausdurchsuchung auch so. Folglich müssen sie das ankündigen, wenn sie meinen Rechner durchsuchen wollen - und selbst da hab ich immernoch das Recht auf Verweigerung. [Editerle] Wer sagt, dass es sich bei der heimlichen Durchsuchung nicht um Spionage handeln könnte?! Angenommen, ich hab irgendwelche wichtigen Daten auf dem Rechner, welchen dem Fernmeldegeheimnis/Postgeheimnis/was.weiß.ich unterliegen, dann kann der Staat da nicht einfach reinschauen... Das würde in dem Fall auch nicht zutreffen - das "Und selbst wenn" war bezogen auf die Anmeldung der Onlinedurchsuchung.
  13. Da eine Anzeige bei solchen Sachen wenig bringen würde, würde ich das sicher trotzdem machen. Die Frage ist vielmehr, wie dann deren Reaktion aussieht. Müssen Durchsuchungen nicht angemeldet sein? Und selbst wenn - dennoch ist das ein Eingriff in die Privatsphäre und wenn sie nichts finden würd ich Schadensersatz verlangen. Sage ich. Wenn ich mich in der (staatlichen) Öffentlichkeit an (staatliche) Gesetze halten soll müssen sie sich in heimischer Öffentlichkeit an meine Gesetze halten.
  14. Natürlich ist er das. Wer ohne plausiblen Grund in meine Wohnung/Netzwerk eindringt oder das Fernmeldegeheimnis verletzt, wird entsprechend sanktioniert.
  15. Ich frage mich, was passiert, wenn ich den Bundestrojaner mitbekomme, dies als Eingriff in meine Privatsphäre auffasse und entsprechend reagiere. Trojaner/Virus zurückschicken, immerhin hab ich ja ein Recht auf Selbstverteidigung. :floet:
  16. Wenn du die Datei eh schon gespeichert hast und sie im Browser anzeigen willst, dann nehm doch den IMG-TAG vom HTML mit dem entsprechenden Pfad.
  17. C Referenz -strlen Funktion- btw: isdigit() - Standard C String & Character - C Programming Reference - eLook.org
  18. Die Vererbung von A kann ich nicht rauslassen, da einige Funktionen einen A-Typ als Parameter brauchen. Das Problem entsteht nur wegen der besseren Lesbarkeit, aber wenns nicht geht, ist das auch ok...
  19. Image.FromStream-Methode (Stream) (System.Drawing) Abprüfen ob der Stream (oder Datei) ein gültiges Bildformat besitzt. (Siehe Exception)
  20. Ja, aber wenn ich sage, dass B.bar gleichzeitig A.foo implementiert müsste das doch heißen, dass A.foo implementiert ist, wenn B.bar implementiert wurde. :confused: Komische Sprache...
  21. hmm Also im Debugger konnt ich den Text nichtmal setzen - scheint so, also wäre das nur eine abgespeckte Liste, in der wirklich nur Bildinformationen stehen.
  22. TDM

    Amiga :)

    Ich erinner mich grad an meine A500-Wing Commander-Zeit. Ich glaub ich werd den bei Gelegenheit mal wieder entstauben.
  23. Grüße, mich beschäftigt seit einiger Zeit das Problem, ob es möglich ist eine Property eines Interfaces mit Interfacevererbung umzubenennen. Bei einfacher expliziter Interfaceimplementierung ist dies ja einfach realisierbar: Interface IFooBar Property FooBar() As Double End Interface Class FooBar : Implements IFooBar Public Property FooBar() As Double Get '... End Get Set(ByVal value As Double) '... End Set End Property Public Property IFooBarsFooBar() As Double Implements IFooBar.FooBar Get '... End Get Set(ByVal value As Double) '... End Set End Property End Class Da dacht ich mir, wenn das so geht, dann kann ich auch noch ein Interface dazwischenschalten, welches die Eigenschaft des Interfaces einfach umbenennt: Interface A Property foo() As Double End Interface Interface B : Inherits A Property bar() As Double Implements A.foo End Interface Class C : Implements B Public Property bar() As Double Implements B.bar Get '... End Get Set(ByVal value As Double) '... End Set End Property End Class Funktioniert so aber nicht, weil: Warum ist das so? Ich hab doch in B geschrieben, dass die Property bar gleichzeitig die Property foo repräsentiert. Gibt es da irgend eine Möglichkeit oder ist das nicht machbar?
  24. Hast du dir mal die Liste bzw. die Images im Debugger angeschaut? Oder probier einfach mal myList.Images[myList.Images.Count - 1] in einer temporären Variable zu buffern. Erm... Leere Liste erstellt. Objekt A hinzugefügt. Letztes Objekt aus der Liste holen (A).Tag Tag des letzten Objekts(A) aus der Liste ändern. Letztes Objekt aus der Liste holen (A).Tag Ergo: Natürlich.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...