Zum Inhalt springen

xk4fu

Mitglieder
  • Gesamte Inhalte

    174
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von xk4fu

  1. hi, für meine exe öffne ich ein pipe um zu testen, ob schon eine läuft, sollte diese nochmal gestartet werden; bei -1 mach ich die zweite halt wieder zu; jetzt möchte ich daten von der zweiten gestarteten exe an die erste übergeben, da ja mit der ersten weitergearbeitet werden muss; dazu möchte ich den bereits gestarteten pipe verwenden, bekomms aber nicht hin ich versuchs mit der API funktion writefile Declare Function WriteFile Lib "kernel32" (ByVal hFile As Integer, ByRef lpBuffer As Object, ByVal nNumberOfBytesToWrite As Integer, ByRef lpNumberOfBytesWritten As Integer, ByRef lpOverlapped As OVERLAPPED) As Integer und readfile Declare Function ReadFile Lib "kernel32" (ByVal hFile As Integer, ByRef lpBuffer As Object, ByVal nNumberOfBytesToRead As Integer, ByRef lpNumberOfBytesRead As Integer, ByRef lpOverlapped As OVERLAPPED) As Integer aber beim writefile bekomm ich nur 0 zurück und bei writtenfile auch nur 0; das handle hat einen korrekten wert; woran könnte das scheitern?
  2. tdm, du weist schon, was eine rekursion ist, oder ist zwar umständlich, aber naja... die funktion sollte auch nur als denkanstoß dienen
  3. Dim MaNodes(100) As String Dim MiIndex As Integer Dim test As String MiIndex = -1 test = SearchTV(TreeView1, 0, 0, 0) Private Function SearchTV(ByVal tv As TreeView, _ ByVal node As Long, _ ByVal subnode As Long, _ ByVal subnode2 As Long) As String If tv.Nodes(node).NextNode Is Nothing Then If tv.Nodes(node).GetNodeCount(False) - 1 >= subnode Then If tv.Nodes(node).Nodes(subnode).GetNodeCount(False) - 1 >= subnode2 Then SearchTV(tv, node, subnode, subnode2 + 1) MiIndex = MiIndex + 1 MaNodes.SetValue(tv.Nodes(node).Nodes(subnode).Nodes(subnode2).Text, MiIndex) 'MessageBox.Show(tv.Nodes(node).Nodes(subnode).Nodes(subnode2).Text) Else SearchTV(tv, node, subnode + 1, 0) MiIndex = MiIndex + 1 MaNodes.SetValue(tv.Nodes(node).Nodes(subnode).Text, MiIndex) 'MessageBox.Show(tv.Nodes(node).Nodes(subnode).Text) End If Else MiIndex = MiIndex + 1 MaNodes.SetValue(tv.Nodes(node).Text, MiIndex) 'MessageBox.Show(tv.Nodes(node).Text) Exit Function End If Else If tv.Nodes(node).GetNodeCount(False) - 1 >= subnode Then If tv.Nodes(node).Nodes(subnode).GetNodeCount(False) - 1 >= subnode2 Then SearchTV(tv, node, subnode, subnode2 + 1) MiIndex = MiIndex + 1 MaNodes.SetValue(tv.Nodes(node).Nodes(subnode).Nodes(subnode2).Text, MiIndex) 'MessageBox.Show(tv.Nodes(node).Nodes(subnode).Nodes(subnode2).Text) Else SearchTV(tv, node, subnode + 1, 0) MiIndex = MiIndex + 1 MaNodes.SetValue(tv.Nodes(node).Nodes(subnode).Text, MiIndex) 'MessageBox.Show(tv.Nodes(node).Nodes(subnode).Text) End If Else SearchTV(tv, node + 1, 0, 0) MiIndex = MiIndex + 1 MaNodes.SetValue(tv.Nodes(node).Text, MiIndex) 'MessageBox.Show(tv.Nodes(node).Text) End If End If End Function
  4. die listview funktionalität an sich und die datenhaltung bleibt doch komplett erhalten; das einzige was du machen musst, ist dir den index des column zu merken, damit du ihn wieder an korrekter position einfügen kannst, da, wenn ein column removed wurde, dieser beim adden wieder an die letzte position hinzugefügt wird (beim insert kann man einen index angeben), aber die daten der zeilen der entsprechenden spalte noch an der selben position bleiben soll heißen: bsp: spalte 1 | 2 | 3 wert: a | b | c löscht du spalte 2 und fügst sie wieder ein schaut das so aus( wohlgemerkt nur bei add, mit insert gehts) spalte 1 | 3 | 2 wert: a | b | c das bsp zeigt aber, dass die werte der zeilen völlig unberührt vom remove bleiben, d.h. du kannst weiterhin sortieren usw und die ausgeblendete spalte sortiert sich dabei mit (siehe code) Dim c1 As New System.windows.Forms.ColumnHeader Dim c2 As New System.windows.Forms.ColumnHeader Dim c3 As New System.windows.Forms.ColumnHeader Dim iIndex As Integer Private m_Sort As SortOrder = SortOrder.Descending Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load ListView1.View = View.Details ListView1.FullRowSelect = True c1.Text = "s1" c1.Width = 50 c2.Text = "s2" c2.Width = 50 c3.Text = "s3" c3.Width = 50 With ListView1.Columns .Add(c1) .Add(c2) .Add(c3) End With With ListView1.Items With .Add("1") .SubItems.Add("2") .SubItems.Add("3") End With With .Add("2") .SubItems.Add("5") .SubItems.Add("6") End With With .Add("3") .SubItems.Add("3") .SubItems.Add("2") End With End With End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ListView1.Columns.Insert(iIndex, c2) End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click iIndex = ListView1.Columns.IndexOf(c2) ListView1.Columns.Remove(c2) End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click MessageBox.Show(ListView1.Items(0).SubItems(1).Text) End Sub Private Sub ListView1_ColumnClick(ByVal sender As Object, _ ByVal e As System.Windows.Forms.ColumnClickEventArgs) _ Handles ListView1.ColumnClick Select Case e.Column Case 0 ListView1.ListViewItemSorter = Nothing ListView1.Sorting = m_Sort Case 1 ListView1.ListViewItemSorter = Nothing ListView1.Sorting = m_Sort Case 2 ListView1.ListViewItemSorter = Nothing ListView1.Sorting = m_Sort End Select If m_Sort = SortOrder.Ascending Then m_Sort = SortOrder.Descending ElseIf m_Sort = SortOrder.Descending Then m_Sort = SortOrder.Ascending End If End Sub
  5. ok, nochmal bisl überarbeitet notwendig: listview und 3 buttons wenn du auf button 3 klickst, wirst du bemerken, dass die daten dieser spalte noch verfügbar sind, obwohl die spalte ausgeblendet ist Dim c1 As New System.windows.Forms.ColumnHeader Dim c2 As New System.windows.Forms.ColumnHeader Dim c3 As New System.windows.Forms.ColumnHeader Dim iIndex As Integer Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load ListView1.View = View.Details ListView1.FullRowSelect = True c1.Text = "s1" c1.Width = 50 c2.Text = "s2" c2.Width = 50 c3.Text = "s3" c3.Width = 50 With ListView1.Columns .Add(c1) .Add(c2) .Add(c3) End With With ListView1.Items With .Add("1") .SubItems.Add("2") .SubItems.Add("3") End With End With End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ListView1.Columns.Insert(iIndex, c2) End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click iIndex = ListView1.Columns.IndexOf(c2) ListView1.Columns.Remove(c2) End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click MessageBox.Show(ListView1.Items(0).SubItems(1).Text) End Sub
  6. hi, der code braucht nen ListView namens ListView1 und nen button namens Button1 damit kannst du mal testen, wie man eine spalte ausblenden kann; das adden und removen löscht nicht die daten (das willst du da, oder ) Dim c1 As New System.windows.Forms.ColumnHeader Dim c2 As New System.windows.Forms.ColumnHeader Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load ListView1.View = View.Details ListView1.FullRowSelect = True c1.Text = "fall" c1.Width = 100 c2.Text = "tttttttesssssssssst" c2.Width = 200 With ListView1.Columns .Add(c1) .Add(c2) End With With ListView1.Items With .Add("test") .SubItems.Add("hallo") End With End With ListView1.Columns.Remove(c2) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ListView1.Columns.Add(c2) End Sub
  7. xk4fu

    Ordnernamen auslesen

    auf die schnelle: string[] myDirs = new string[100]; DirectoryInfo di = new DirectoryInfo(@"c:\"); int i = 0; for (i = 0; i < di.GetDirectories().GetUpperBound(0); i++) { myDirs.SetValue(di.GetDirectories().GetValue(i).ToString(), i); } foreach (string strDirName in myDirs) { if(strDirName != null) listBox1.Items.Add(strDirName); } wobei das zerschneiden des strings (also erstere lösung) wohl kürzer wäre
  8. der code zeichnet einen rahmen um den bereich, indem etwas steht; hat jetzt direkt mit deinem problem nix zu tun, aber so in der art solltest du es auch lösen können; wie genau, weis ich jetzt auch nicht auf anhieb, sorry google sollte doch aber helfen, oder nicht?
  9. evtl hilft dir das weiter Set Bereich = ActiveSheet.UsedRange With Bereich.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Bereich.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Bereich.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Bereich.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Bereich.Borders(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Bereich.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With End Sub
  10. leg doch ein tempoäreres datatable an; in dem du zuerst die id spalte hinzufügst und dann die restlichen aus dem anderen datatable
  11. jop erst addest du eine zusätzliche spalte dann machst du eine schleife, die dir deine werte jeweils um eine col nach hinten setzt und somit kannst du die erste als id verwenden
  12. möglichkeiten gibt es, diesen selbst anzubieten wird aber was kosten; du kannst z.b. über anysms (ist aber für firmen) oder vergleichbare anbieter, sms verschicken wie man das genau einstellt, erfährst du bei den anbietern selbst; bei anysms muss man z.b. nur eine zeile mit entsprechenden parametern als url aufrufen und schon geht die sms raus... so eine anbindung ist natürlich mit php leicht möglich
  13. int i; HWND hwnd = ::GetWindow( GetSafeHwnd(), GW_CHILD | GW_HWNDFIRST ); while( hwnd ) { hwnd = ::GetWindow( hwnd, GW_HWNDNEXT ); i = ::GetDlgCtrlID(hwnd); } ich brauche die information, ob es ein textfeld ist oder nicht; wo bekomme ich diese her? den handle und die id hab ich ja schonmal
  14. hallo, ich möchte aus einem dialog alle controls auslesen; in der schleife möchte ich hier nach edit controls (also textfeldern) filtern und mir deren id holen; ansatz ist, dies mit getwindow zu machen; aber ich komm nicht weiter; kann mir da mal jemand bitte helfen
  15. xk4fu

    Mehrere Fenster mit VB.NET

    mehrere fenster auf einmal? sofort sichtbar bei programmaufruf? oder werden sie von anderen fenstern über buttons aufgerufen? sollen die dockbar sein? kannste das mal genauer beschreiben?!
  16. also, nicht, dass ich das falsch verstanden habe: du hast ein programm, welches zwei variablen bekommt: Bildgröße und der Anzahl der Rechtecke d.h. jedem algorithmus werden diese zwei variablen übergeben; was der algorithmus intern verbricht, ist doch erstmal vollkommen irrelevant, d.h. es kann über die o notation "ganz einfach" jeder algorithmus mit dem anderen verglichen werden, da: 1. jeder algorithmus die gleichen startvariablen braucht wären es nicht die gleichen startvariablen, wäre es ein anderes problem, und somit wäre es schwachsinn, die beiden algorithmen zu vergleichen; 2. kann man die laufzeit des algorithmus auf die startvariablen abbilden, egal, was der algorithmus intern rumwurtschtelt! 3. kann somit jeder algorithmus, der das gleiche problem lösen muss, anhand dieser variablen eben "ganz einfach" miteinander verglichen werden;
  17. nimm repeater oder strom lan her! bei mir versagt das wlan sogar auf der selben etage (gugg mal meine kleine grafik, wie ich mein lan aufgebaut hab)
  18. heißt für mich im klartext, dass du die anderen mitarbeiter zum rauchen oder kaffeetrinken animiert hast und sie gerne mit zigaretten oder nem kaffee versorgt hast
  19. bei der o notation gibt es kein n, m, usw... es gibt nur eine konstante n z.b. mal wieder der bubblesort man hat ja zwei schleifen mit unterschiedlichen variablen die erste schleife wird n mal durchlaufen die zweite n * n, da die zweite selbst n mal durchlaufen wird und das n mal (durch die erste) ich weis nicht auf was du diese aussage beziehst: O(N² * M) <----- M????? O(N * M²) <----- M²???? O(log N + M³) <-- M³???? auf unwissenheit oder ignoranz? von göttlicher eingebung kann hier auf jedenfall nicht gesprochen werden klar kann man die o notation nicht immer verwenden, aber bevor man sie nicht kennt, sollte man nicht ein unqualifiziertes urteil darüber geben!
  20. sry, bin neu in c++ The code assumes that the CMyDialogclass has an initialized and created CBrush member named m_brush. mit was soll ich m_brush initialisieren? bzw. wie?
  21. merci, die methode hab ich schon; leider setzt pDC->SetBkColor(RGB(0, 255, 0)); die hintergrundfarbe des label nur soweit, wie die schrift geht; was anderes hab ich leider noch nicht;
  22. mit "ganz einfach" habe ich eigentlich gemeint, dass man - entsprechendes know how vorausgesetzt - den code zeile für zeile durchgeht und die komplexität anhand der O-Notation bestimmt; TomasRiker stellt sich das mit seinem Beweis und seiner Bewertung glaube ich komlizierter vor als es ist
  23. hi, wie kann ich in einem dialog in mfc die farbe eines labelfeldes ändern? mfg k4fu
  24. ja, kann ich ein bubblesort hat z.b. O(n²) es gibt hier zwei for schleifen, die jeweils n bzw. n-1 mal durchlaufen werden zuweisungen usw kann man außer acht lassen somit ist z.b. der bubblesort nicht wirklich schnell O(n*log(n)) Sorts sollten dem z.b. immer vorgezogen werden

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...