-
Gesamte Inhalte
1804 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von TDM
-
void push(Element data) { Link tmp; tmp = new sNode; tmp -> Elem = new char[MAX_STRLEN]; strcpy(tmp -> Elem, data); tmp -> Elem = data; /* Daten eintragen */ if (!head -> Elem) { head = tmp; tmp -> ID = 1; tmp -> PPrev = NULL; /* Anfang auf NULL setzen */ } else { tmp -> PPrev = tail; /* Verlinkung zum Vorherigen */ tmp -> ID = (tmp -> PPrev -> ID + 1); tail -> PNext = tmp; /* Verlinkung zum Nächsten */ } tmp -> PNext = NULL; /* Nächste vom Nächsten gibts nicht */ tail = tmp; /* Neues Ende */ } dat funzt jetzt mehr oder weniger btw: wo habe ich malloc mit new gemischt ? hatte mir zwar erst überlegt ich mach #define NEW_ADDRESS new sNode aber hab das dann doch gelassen und lieber überall im text einzeln ersetzt... und ja... ich habe auch free mit delete getauscht naja egal... geht jetzt danke
-
ich habe jetzt folgendes probiert um den Speicher zu reservieren: void push(Element data) { Link tmp; tmp = new sNode; tmp -> Elem = new char[MAX_STRLEN]; tmp -> Elem = data; /* Daten eintragen */ if (!head -> Elem) { head = tmp; tmp -> ID = 1; tmp -> PPrev = NULL; /* Anfang auf NULL setzen */ } else { tmp -> PPrev = tail; /* Verlinkung zum Vorherigen */ tmp -> ID = (tmp -> PPrev -> ID + 1); tail -> PNext = tmp; /* Verlinkung zum Nächsten */ } tmp -> PNext = NULL; /* Nächste vom Nächsten gibts nicht */ tail = tmp; /* Neues Ende */ } das geht aber auch nicht so richtig O.o
-
das mit dem VL_Mode würd ich trotzdem über define machen, da sonst eine meldung von wegen neu-definition der funktionen kommt aber lassen wir das das problem besteht - so habe ich gerade rausgefunden - darin, dass alle werte überschrieben werden Bsp: Datensatz 1 mit Wert "Test1" hinzufügen: Wert 1 = "Test1" Datensatz 2 mit Wert "Test2" hinzufügen: Wert 1 = "Test2" Wert 2 = "Test2" Datensatz 1 mit Wert "Test3" hinzufügen: Wert 1 = "Test3" Wert 2 = "Test3" Wert 3 = "Test3"
-
über das define lässt sich streiten das free(head) ist nur in einem pop... und selbst da nur wenn das erste und das letzte element gleich sind (weil in dem Ausdruck if (head -> PNext) wird es (head) danach gleich wieder gesetzt :x) Edit: im übrigen habe ich gerade rausgefunden, dass es nichts mit pop() zutun hat
-
Was zusammenfassen ?
-
hi, ich habe mir ein Programm für Arbeitsaufträge geschrieben... sprich das soll den ablauf einer arbeit anzeigen... stdflifo.h #include <stdio.h> #if !defined(CASE) || !defined(DEFAULT) #define CASE break;case #define DEFAULT break;default #endif #if !defined(CLS) #include <stdlib.h> #define CLS system("CLS") #endif #define MAX_ATTEMPT 3 /* Anzahl der Fehlversuche */ #define FEHLEINGABE CLS; printf("ungueltige Eingabe\n\n");Quit-- #define VL_MODE_DEFAULT 1 #ifndef VL_MODE #define VL_MODE VL_MODE_DEFAULT #endif #ifndef MAX_STRLEN #define MAX_STRLEN 4096 #endif //Struct Deklaration struct sNode; //Typedef #ifndef Element_ID typedef int Element_ID; #endif #ifndef Element typedef char *Element; #endif typedef sNode *Link; /* Link = Verweise */ //Struct Definition struct sNode { Element_ID ID; Element Elem; Link PPrev; Link PNext; }; #define NEW_ADDRESS (Link) malloc(sizeof(sNode)) #if !VL_MODE //Kopf und Schwanz (erste und letzte) Link head = NEW_ADDRESS; Link tail; #else Link tail = NEW_ADDRESS; #endif //Funktion void print_menu(unsigned int Orders) { printf("********************************************************************************" "* *" "* 1 = Neuen Auftrag erzeugen *"); if (Orders) printf("* 2 = Aktuellen Auftrag anzeigen *" "* 3 = Bestimmten Auftrag anzeigen *" "* 4 = Aktuellen Auftrag loeschen *" "* 5 = Bestimmten Auftrag loeschen *"); printf("* 6 = Programm beenden *" "* *" "* Noch %d Autraege *" "********************************************************************************",Orders); } /*////////////////////////////////////////////////////////////////// // LIFO Funktionen //////////////////////////////////////////////////////////////////*/ #if !VL_MODE void push(Element data) { Link tmp; tmp = NEW_ADDRESS; tmp -> Elem = data; /* Daten eintragen */ if (!head -> Elem) { head = tmp; tmp -> ID = 1; tmp -> PPrev = NULL; /* Anfang auf NULL setzen */ } else { tmp -> PPrev = tail; /* Verlinkung zum Vorherigen */ tmp -> ID = (tmp -> PPrev -> ID + 1); tail -> PNext = tmp; /* Verlinkung zum Nächsten */ } tmp -> PNext = NULL; /* Nächste vom Nächsten gibts nicht */ tail = tmp; /* Neues Ende */ } inline Element show(void) { return head -> Elem; } Element show(Element_ID ID) { Link tmp = head; while (tmp -> ID != ID) /*Solange ID nicht gefunden wurde*/ { tmp = tmp -> PNext; } return tmp -> Elem; } inline void set_default(void) { head -> Elem = NULL; } void pop(void) { if (head -> PNext) /* Wenn es ein nächstes gibt */ { Link tmp; tmp = head -> PNext; tmp -> PPrev = NULL; free(head); head = tmp; } else if (head == tail && head -> Elem) /* erste gleich letzte (nur noch 1 Element) */ { head -> Elem = tail -> Elem = NULL; free(head); /* Addresse freigeben */ } } void pop(Element_ID ID) { Link tmp = head; Link _tmp; while (tmp -> ID != ID) { tmp = tmp -> PNext; } _tmp = tmp; while (_tmp -> PNext) { _tmp = _tmp -> PNext; (_tmp -> ID)--; } if (tmp == head) { head = tmp -> PNext; } else { tmp -> PPrev -> PPrev = tmp -> PPrev; } tmp -> PPrev -> PNext = tmp -> PNext; free(tmp); } /*////////////////////////////////////////////////////////////////// // FIFO Funktionen //////////////////////////////////////////////////////////////////*/ #else void push(Element data) { Link tmp; tmp = (Link) malloc(sizeof(sNode)); tmp -> Elem = data; tail -> PNext = tmp; tmp -> PNext = NULL; if (!tail -> PPrev) { tmp -> ID = 1; } else { tmp -> ID = (tail -> ID + 1); } tmp -> PPrev = tail; tail = tmp; } inline Element show(void) { return tail -> Elem; } Element show(Element_ID ID) { Link tmp = tail; while (tmp -> ID != ID) { tmp = tmp -> PPrev; } return tmp -> Elem; } inline void set_default(void) { tail -> PPrev = NULL; tail -> Elem = NULL; tail -> ID = 1; } void pop(void) { if(tail -> PPrev) /*nicht das Letzte */ { Link tmp; tmp = (Link) malloc(sizeof(sNode)); tmp = tail -> PPrev; tmp -> PNext = NULL; free(tail); tail = tmp; } else { free(tail); /* letzte löschen */ } } void pop(Element_ID ID) { Link tmp = tail; Link _tmp; while (tmp -> ID != ID) { tmp = tmp -> PPrev; } _tmp = tmp; while (_tmp -> PNext) { _tmp = _tmp -> PNext; (_tmp -> ID)--; } if (tmp -> PPrev && tmp -> PNext) { tmp -> PPrev -> PNext = tmp -> PNext; tmp -> PNext -> PPrev = tmp -> PPrev; } else if (!tmp -> PNext) { tmp -> PPrev -> PNext = NULL; tail = tmp -> PPrev; } else { tmp -> PNext -> PPrev = NULL; } free(tmp); } #endif FLIFO.c //Einsprungspunkt für FIFO.c #define VL_MODE 0 #undef __C++ #include "stdflifo.h" #include <iostream> using namespace std; int main() { short int Quit = MAX_ATTEMPT ; int Orders = 0, Wahl; Element_ID ID; char data[MAX_STRLEN]; set_default(); while (Quit) { print_menu(Orders); scanf("%d", &Wahl); switch (Wahl) { case 1: CLS; printf("Zahl eingeben:\t"); scanf("%s", data); push(data); Orders++; if (Quit < MAX_ATTEMPT) Quit = MAX_ATTEMPT; CASE 2: if (Orders) { CLS; printf("Aktueller Auftrag:\t%s\n\n",show()); if (Quit < MAX_ATTEMPT) Quit = MAX_ATTEMPT; } else { FEHLEINGABE; } CASE 3: if (Orders) { printf("AuftragsID bitte eingeben:\t"); scanf("%i", &ID); CLS; if (ID > Orders) { printf("Dieser Auftrag existiert nicht.\n\n"); } else { printf("%d. Auftrag:\t%s\n\n",ID,show(ID)); } if (Quit < MAX_ATTEMPT) Quit = MAX_ATTEMPT; } else { FEHLEINGABE; } CASE 4: if (Orders) { pop(); CLS; if (Quit < MAX_ATTEMPT) Quit = MAX_ATTEMPT; Orders--; } else { FEHLEINGABE; } CASE 5: if (Orders) { printf("AuftragsID bitte eingeben:\t"); scanf("%i", &ID); if (ID > Orders) { printf("Dieser Auftrag existiert nicht.\n\n"); } else { pop(ID); } CLS; if (Quit < MAX_ATTEMPT) Quit = MAX_ATTEMPT; Orders--; } else { FEHLEINGABE; } CASE 6: Quit = 0; DEFAULT: FEHLEINGABE; } } return 0; } Das klappt auch mehr oder weniger... Nur ist das Problem, dass er beim löschen (egal welchen Modus) immer den ersten Datensatz zuerst löscht und ich find den fehler nicht jemand eine idee ?
-
hi, ich habe mich heut ein bisschen in der Batchprogrammierung eingelesen und ein kleines anmeldescript geschrieben, was die Schnellstartleiste entweder vom Administrator speichern - oder diese in den angemeldeten Account laden soll aber irgentwie will der die 2 Variablen am Anfang nicht setzen O.o set %DEFQUICKLDIR% = "%SystemDrive%\Dokumente und Einstellungen\Default Settings\Default Quicklaunch" set %QUICKLDIR% = "Anwendungsdaten\Microsoft\Internet Explorer\Quick Launch" IF %1 == A ( copy "%USERPROFILE%\%QUICKLDIR%\*.*" "%DEFQUICKLDIR%" IF EXIST %2 ( IF %2 == a ( copy /-Y "%USERPROFILE%\%QUICKLDIR%\*.*" "%SystemDrive%\Dokumente und Einstellungen\root\%QUICKLDIR%\" ) ELSE ( IF %2 == r ( copy /-Y "%USERPROFILE%\%QUICKLDIR%\*.*" "%SystemDrive%\Dokumente und Einstellungen\Administrator\%QUICKLDIR%\" ) ) ) ) ELSE ( IF %1 == D ( copy /Y "%DEFQUICKLDIR%\*.*" "%USERPROFILE%\%QUICKLDIR%\" ) )
-
gewollt war nur nen kurzer hinweis
-
ok, mein fehler sry ^^
-
also ich würd sagen: char var[] = "dein_Wert"; sprintf(char old[]," F:\\DATA\\Outlook\\Attachments\\Temp\\%s.ini",var); weis aber nicht ab da gemekert wird wegen dem %s also ob da lehrzeichen benötig werden
-
Was passiert wenn man "C" zum Slave macht und D zum Master?
-
ja netzwerkkarte hat er der sch...öne drucker hat nur das problem, dass man das am display einstellen muss also mit MAC arpen geht ne egal hab das problem eh behoben
-
Neues Problem, weis einer wie man den drucker reseten kann und/oder die IP löscht ?
-
toll... nun druckt er alles fein und schön... hat aber papierstau
-
dann wird nen neuer ausm keller geholt
-
25/75 Bin Programmierer
-
nö... aber wir reparieren die ganze hardware mein cheff sagt, hier wird keiner angerufen das machste selber
-
Service anrufen bringt auch nix, weil wir sind der Service ^^
-
warum muss das ding so groß sein ?! *heul* *wieder alles auseinander nehm*
-
ok... die rollen bewegen sich nicht danke für den hinweis
-
Hi, ich habe hier einen Laserjet 4M Plus gerade auseinander genommen und die Fixiereinheit gewechselt. Wenn ich den Drucker jetzt aber starte, kommt der error 57.1 WART. kann mir einer sagen wo der Fehler liegt, weil ich hatte eigentlich aufgepasst, dass ich alles wieder richtig zusammenbau Im Handbuch steht ich solle mich an den Kundendienst wenden ^^ Das bringt mir aber nix Per google hab ich nur ne spanische Seite gefunden. (Kann ich nicht übersetzen)
-
die _default.pif war nur nen beispiel... geht nichtmal mit einer exe
-
Ich denk mal das gehört hier rein, wenn nicht, kann man es ja noch verschieben Es geht um Folgendes: Ich will den Befehl copy mit Variablen verwenden, allerdings kommt da immer irgentwas von Syntaxfehler C:\WINDOWS> copy _default.pif %USERPROFILE%\Test\default.pif Syntaxfehler. Ich weis nicht woran das liegt, weil die Variable %USERPROFILE% ist eigentlich gesetzt... Ich hatte es auch folgende Zeile in eine Bat-Datei geschrieben: copy %WINDIR%\_default.pif %USERPROFILE%\Test\default.pif Dann kam bei mir folgendes: C:\> text.bat C:\> copy C:\WINDOWS\_default.pif C:\Dokumente und Einstellungen\Administrator\Test\default.pif Syntaxfehler. Kann mir irgentwer sagen warum das nicht geht ? btw: Windows XP
-
wie gesagt, ich hab es einfach umgebunden... der vorherige Code: import javax.swing.*; import javax.swing.border.*; import java.awt.*; import java.awt.event.*; public class Mauszeichner extends JPanel implements MouseListener, MouseMotionListener { JFrame f = new JFrame("Mauszeichner"); Container c = f.getContentPane(); int mausX; int mausY; int maus_start_x; int maus_start_y; int maus_end_x; int maus_end_y; JPanel pan_Mausdraw = new JPanel(); JLabel lblpos = new JLabel(); public Mauszeichner() { f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(500,600); f.setLocation(600,400); f.setLayout(null); pan_Mausdraw.setBounds(50,50,400,500); pan_Mausdraw.addMouseListener(this); pan_Mausdraw.addMouseMotionListener(this); c.add(pan_Mausdraw); f.setVisible(true); } public static void main(String[] args) { new Mauszeichner(); } public void mouseClicked (MouseEvent e) { } public void mouseReleased (MouseEvent e) { if(e.getButton() == e.BUTTON1) { maus_end_x = e.getX(); maus_end_y = e.getY(); pan_Mausdraw.getGraphics().drawLine( maus_start_x, maus_start_y, maus_end_x, maus_end_y); } else if(e.getButton() == e.BUTTON3) { pan_Mausdraw.getGraphics().clearRect( 0,0,400,500); } } public void mouseExited (MouseEvent e) { maus_start_x = 0; maus_start_y = 0; maus_end_x = 0; maus_end_y = 0; //c.remove(lblpos); } public void mouseEntered (MouseEvent e) { c.add(lblpos); } public void mousePressed (MouseEvent e) { if(e.getButton() == e.BUTTON1) { maus_start_x = e.getX(); maus_start_y = e.getY(); } } public void mouseMoved(MouseEvent e) { lblpos.setBounds(e.getX() + 15, e.getY() - 5, 50, 16); lblpos.setText(e.getX() + ";" + e.getY()); } public void mouseDragged(MouseEvent e) { lblpos.setBounds(e.getX() + 15, e.getY() - 5, 50, 16); lblpos.setText(e.getX() + ";" + e.getY()); } } der jetzige Code: import javax.swing.*; import javax.swing.border.*; import java.awt.*; import java.awt.event.*; public class Mauszeichner extends JPanel implements MouseListener, MouseMotionListener { JFrame f = new JFrame("Mauszeichner"); Container c = f.getContentPane(); int mausX; int mausY; int maus_start_x; int maus_start_y; int maus_end_x; int maus_end_y; JPanel pan_Mausdraw = new JPanel(); JLabel lblpos = new JLabel(); public Mauszeichner() { f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setSize(500,600); f.setLocation(600,400); f.setLayout(null); pan_Mausdraw.setBounds(50,50,400,500); pan_Mausdraw.addMouseListener(this); pan_Mausdraw.addMouseMotionListener(this); c.add(pan_Mausdraw); f.setVisible(true); } public static void main(String[] args) { new Mauszeichner(); } public void mouseClicked (MouseEvent e) { } public void mouseReleased (MouseEvent e) { if(e.getButton() == e.BUTTON1) { maus_end_x = e.getX(); maus_end_y = e.getY(); pan_Mausdraw.getGraphics().drawLine( maus_start_x, maus_start_y, maus_end_x, maus_end_y); } else if(e.getButton() == e.BUTTON3) { pan_Mausdraw.getGraphics().clearRect( 0,0,400,500); } } public void mouseExited (MouseEvent e) { maus_start_x = 0; maus_start_y = 0; maus_end_x = 0; maus_end_y = 0; //pan_Mausdraw.remove(lblpos); } public void mouseEntered (MouseEvent e) { pan_Mausdraw.add(lblpos); pan_Mausdraw.setLayout(null); } public void mousePressed (MouseEvent e) { if(e.getButton() == e.BUTTON1) { maus_start_x = e.getX(); maus_start_y = e.getY(); } } public void mouseMoved(MouseEvent e) { lblpos.setBounds(e.getX() + 15, e.getY() - 5, 50, 16); lblpos.setText(e.getX() + ";" + e.getY()); } public void mouseDragged(MouseEvent e) { lblpos.setBounds(e.getX() + 15, e.getY() - 5, 50, 16); lblpos.setText(e.getX() + ";" + e.getY()); } }
-
ne... ich hatte eine Positions anzeige neben dem Mauszeiger gemacht Die hatte ich aber aufs Frame und nicht aufs Panel gebunden, somit wurde die immer verdeckt. Hab das aber jetzt hingekriegt Trotzdem danke fürs Interesse *g*