-
Gesamte Inhalte
9.912 -
Benutzer seit
-
Letzter Besuch
-
Tagessiege
3
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von Klotzkopp
-
-
Also:
Du brauchst eine Liste der Wörter im Speicher (anstelle der Datei Index.idx). Zu jedem Wort brauchst Du eine weitere Liste, in der die Zahlen gespeichert werden, die auf die Dateien verweisen, die in Path.idx stehen.
Wortliste---> Hund Katze Maus
Dateilisten| 1 3 1
| 2 4 2
v 7 5 5
6 7
8
9
[/CODE]Letztendlich geht es nur darum, die Daten, die in Index.idx abgelegt würden, im Speicher zu halten.
So weit klar?
-
Original geschrieben von lapso
JavaScript ist NICHT geeignet, eine Passwortabfrage zu implementieren. JavaScript ist eine Client-Technik und außerdem für solche Aufgaben nicht vorgesehen.
Das schlimmste, das ich in dieser Richtung mal gesehen habe, sah in etwa so aus:
if( ( login == "User1" && pw == "PW1" )
|| ( login == "User2" && pw == "PW2" )
|| ( login == "User3" && pw == "PW3" )
...und so weiter, über 20 Zeilen.
Da wurden wirklich sämtliche Logins samt Passwörtern an jeden Client im Klartext versandt. Die Seite ist inzwischen nicht mehr am Netz.
Ach ja, natürlich hatte sich der Programmierer "abgesichert", indem er die rechte Maustaste abgefangen hat
-
Ausgehen musst Du von einer Liste, die die gefundenen Worte enthält. Zusätzlich muss aber jedes Element dieser Liste wiederum eine Liste von Zahlen beinhalten, die die Dateien bezeichnen, in denen das Wort gefunden wurde. Wie das konkret aussieht, hängt davon ab, was für eine Art von Liste Du benutzt.
Willst Du die STL verwenden, eine verkettete Liste oder eine Wrapper-Klasse für einen selbsterweiternden Array? Oder was ganz anderes?
-
Ich würde vorschlagen, dass Du Dir selbst eine Klasse schreibst, die ein solches selbsterweiterndes Array simuliert, am besten mit Listen, die Listen von Listen enthalten. So wird nicht mehr Platz als nötig verbraucht.
-
-
Auch immer hilfreich: Die goldenen Regeln
-
Ich tippe auf Computer Based Training...
Hier steht was darüber: http://www.hyg.uni-heidelberg.de/Main-CBT.htm
-
Passiert das bei jedem Projekt, oder nur bei einem bestimmten?
-
Zweiter Versuch, wieder falsches Forum.
Versuchs doch mal in "Compiler, IDEs, APIs zu C++" ...
-
Also mein Beispiel funktioniert mit 7 Clients (mehr hab ich nicht getestet). Die 5 ist wohl wirklich nur die Größe der Accept-Warteschlange
-
CAsyncSocket::Listen erlaubt höchstens 5 wartende Verbindungen, d.h. wenn Du fünf eingehende Verbindungen nicht mit Accept annimmst, wird der jeder weitere Connect abgewiesen.
-
Ich habs grad mal durchgespielt: Wenn Du CAsyncSocket benutzt, brauchst Du keine Threads zu starten, offenbar macht das die MFC unter der Haube.
Der Server braucht zunächst einmal einen Socket, mit dem er Create( port ) und Listen aufruft.
Der Client braucht einen Socket, mit dem er Create() und Connect( port, "ip" ) aufruft.
Der Socket des Servers erhält dann einen OnAccept-Aufruf. Da drin musst Du einen neuen CAsyncSocket erzeugen und mit Accept entgegennehmen. Ich kann Dir das Beispiel schicken, wenn Du möchtest. Ist aber nicht vollständig, ich leake die Sockets und die Daten gehen bisher nur von den Clients zum Server.
-
Seh ich das richtig? Nach dem Accept startest Du einen Thread, der gleich wieder accept ausführt?
-
Du musst dem neu erzeugten Thread den Socket Handle mitgeben, den accept zurückgeliefert hat.Original geschrieben von ComroaderWenn ich einen Thread erzeuge kommt zwar ein Accept vom Server doch dann kommt keine Kommunikation zwischen Server und Clients zustande.
Poste doch mal den Teil des Quellcodes mit dem accept und der Threaderzeugung.
-
Such mal in Richtung fnmatch oder glob.
Genaueres weiß ich auch nicht.
-
Aber Du könntest der struct Menge einen Konstruktor verpassen, der z.B. pNaechster auf NULL setzt. Wenn Du das nämlich irgendwo vergisst, dann hast Du ein Problem.
Allerdings müsstest Du, damit der auch ausgeführt wird, die neuen Strukturen mit new holen und mit delete freigeben. Aber wenn Du sowieso C++ benutzt, ist das ohnehin empfehlenswert.
-
Ein schönes Beispiel für einen SMTP-Client
Nur eine Anmerkung: Das Programm prüft zwar, ob der SMTP-Server eine Antwort auf HELO, MAIL FROM, RCPT TO usw. sendet, aber es scheint nicht den Inhalt der Antwort zu prüfen.
Die Antwort beginnt immer mit einer Zahl, die wiedergibt, ob die Eingabe gültig war. 250 bedeutet m.W. OK, alles über 400 ist ein Fehler.
-
void CMenge::schneiden_mit(CMenge *pMenge)
{
struct Menge *pZeiger;
pZeiger=pMenge->pAnfang;
while(pZeiger!=NULL)
{
if(this->enthalten_in(pZeiger->nummer)!=true)
{
this->entnehmen(pZeiger->nummer);
}
pZeiger=pZeiger->pNaechster;
}
pZeiger=this->pAnfang;
while(pZeiger!=NULL)
{
if(pMenge->enthalten_in(pZeiger->nummer)!=true)
{
this->entnehmen(pZeiger->nummer); <--- Hier ist der Fehler
}
pZeiger=pZeiger->pNaechster;
}
}
Nach dem Entnehmen zeigt pZeiger auf freigegebenen Speicher, denn genau die Struct mit der angegebenen Nummer hast Du ja gerade aus der Liste entfernt. Der letztendliche Absturz des Programms ist dann wohl ein Folgefehler.
-
Original geschrieben von TAZttDevil
is ja gut... hab ich je was anderes behauptet??
Wenn Du mich so fragst, ja , und zwar hier:
Original geschrieben von TAZttDevilDeshalb muß es das Buch aber nicht nicht geben...
-
Die Meldungen sind völlig normal, die dürften bei jedem Debuggen auftauchen. Die Frage dürfte vielmehr sein:
Sind pMenge und pZeiger gültige Zeiger?
-
Wenn Du das meinst:
Original geschrieben von Technicianentweder man macht ne Ausnahme, in welchen Index man den Index aufnimmt oder der Index steht in keinem Index...
Das sind genau die beiden Fälle, die ich beschrieben habe, die dazu führen, dass der Index entweder fehlerhaft oder unvollständig ist: Wenn man eine Ausnahme macht (und dieser Index sich selbst enthält), enthält er ein Buch, das auf sich selbst verweist. Wenn der Index in keinem Index steht, dann fehlt ein Buch, das nicht auf sich selbst verweist.
Es kann ein solches Buch nicht geben.
Wenn es sich selbst enthält, ist ein falscher Eintrag drin, wenn es sich nicht selbst enthält, fehlt ein Eintrag. Eine dritte Möglichkeit gibt es m.W. nicht, und damit folgt, dass das Buch, völlig unabhängig davon, ob es sich selbst enthält, nicht das sein kann, was es zu sein vorgibt.
-
Original geschrieben von TAZttDevil
@Klotzkopp: Wie kommst du daruaf, das es das Buch nicht gibt??
Zumindest gibt es kein solches Buch, das seiner Bezeichnung gerecht wird.
Ein Buch, das nur Verweise auf alle Bücher enthält, die keine Verweise auf sich selbst enthalten, kann es nicht geben, weil das Buch selbst nicht drin stehen darf, aber auch nicht fehlen darf.
Wenn es selbst drinstehen würde, dann stünde ein Buch drin, das einen Selbstverweis enthält -> Der Buchtitel ist falsch.
Andersrum: Wenn es selbst nicht drinstehen würde, dann fehlte ein Buch ohne Selbstverweis -> Der Buchtitel ist falsch.
Folgerung: Es ist egal, ob das Buch sich selbst enthält oder nicht - es enthält in jedem Fall nicht nur alle Bücher ohne Selbstverweis -> So ein Buch gibt es nicht.
-
Das automatische Senden funktioniert, soweit ich weiß, nicht über das Ausführen eines mailto:-URL. Da würde ich dann eher MAPI empfehlen.
-
Hey, ein Freund des ästhetischen Quellcodes
Du kannst (AFAIK nicht nur mit VC++) Stringliterale einfach aneinanderhängen, wenn Die Einzelteile mit Anführungszeichen abgeschlossen sind. Dabei ist egal, wie viele Whitespaces (Leerzeichen, Tabs, Zeilenvorschübe) dazwischen sind:
printf("Hello" " Wo"
"rl"
"d!\n");
[/CODE]
Dynamisches mehrdimensionales Array!
in C und C++
Geschrieben
So, es gibt jetzt mehrere Möglichkeiten, in C++ so eine Liste zu implementieren. In der Standard Template Library (STL) gibt es mehrere Klassen, die genau das können. Es handelt sich dabei um Template-Klassen, d.h. es sind Schablonen, bei denen Du noch angeben musst, was die einzelnen Objekte der Liste sind.
Ich würde std::vector empfehlen:
#include <vector>
std::vector< int > meinIntVector;
deklariert einen "vector" von ints. So etwas könntest Du verwenden, um die Zahlen zu jedem Wort zu speichern. Du kannst mit meinIntVector.push_back( Zahl ) neue Zahlen zum vector hinzufügen.
Für die Wortliste kannst Du auch einen vector verwenden, allerdings muss jeder Eintrag nicht nur das Wort selbst enthalten, sondern auch die Liste mit den Zahlen:
typedef struct {
char szWort[200];
std::vector< int > DateiListe;
} WortListenEintrag;
std::vector< WortListenEintrag > meineWortListe;