Für Joe, Allgemeine Fragen :)

Hallo Reinhard,

die Netztwerkgeschichte?
Werte es ab, bis Du den Code siehst, dann sagst Du auch ‚soll das alles gewesen sein?‘ :smile:

Gruß Rainer

Hallo ihr beiden,

Rainer vergiss bitte nicht das, das Winsock glaub unter VBA net verfügbar ist :s Aber wann denkst du denn bist du soweit mit der Geschichte? So langsam komme ich an einen Punkt wo es auf die Kommunikation ankommt :smile:
Ich hab mal noch so einiges dazu gebastelt und werde heute Abend mal 3 Formen posten, somit sieht man das erste zusammenspiel der Module :wink:

MfG Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Alex,

Rainer vergiss bitte nicht das, das Winsock glaub unter VBA
net verfügbar ist :s

Stimmt, winsock muß ich über die API nachbilden.

Aber wann denkst du denn bist du soweit
mit der Geschichte? So langsam komme ich an einen Punkt wo es
auf die Kommunikation ankommt :smile:

Nicht bevor ich an einem Rechner mit VB sitze. Das hier ist ein MAC. :smile:

Ich hab mal noch so einiges dazu gebastelt und werde heute
Abend mal 3 Formen posten, somit sieht man das erste
zusammenspiel der Module :wink:

Ich werde es nicht testen können. :frowning:
In der Firma sind die Möglichkeiten begrenzt, die Zeit auch.

Gruß Rainer

Hallo Rainer,

Rainer vergiss bitte nicht das, das Winsock glaub unter VBA
net verfügbar ist :s

Das war eigentlich nur ein Hinweis, das es Reinhard net so einfach verstehen wird oder gar nachbilden kann!

Stimmt, winsock muß ich über die API nachbilden.

Nicht unter VB, also wenn es ein eigenstaendiges proggi werden soll!
Ich habe mal wieder VB5 bei mir drauf genagelt :smile: Spilt , Replace etc. gehen da natuerlich nicht. Aber dafür tippsel ich die Routinen bei Bedarf nach.
Ich bin bis jetzt davon ausgegangen das Joe eine VB Anwendung haben wollte? Das sehe ich doch richtig oder?

Aber wann denkst du denn bist du soweit
mit der Geschichte? So langsam komme ich an einen Punkt wo es
auf die Kommunikation ankommt :smile:

Nicht bevor ich an einem Rechner mit VB sitze. Das hier ist
ein MAC. :smile:

Schöner Salat und lass mich raten, das kann noch ne Weile dauern? :frowning:

Ich hab mal noch so einiges dazu gebastelt und werde heute
Abend mal 3 Formen posten, somit sieht man das erste
zusammenspiel der Module :wink:

Ich werde es nicht testen können. :frowning:
In der Firma sind die Möglichkeiten begrenzt, die Zeit auch.

Hmm, naja dann spiele ich da halt noch weiter mit rum *feix* und baste l dann noch das eine oder andere ein. Vlt. die Kommunikation anfangen, denn ich gehe mal von aus, wenn wir Winsock verwenden werden, das wir dann den selben Weg gehen werden. Also ein indiziertes Winsock drauf. Das mit dem 0 geht auf Listen und bei bedarf werden Elemente nachgeladen und bauen den Connect auf. Wolltest du das so machen?

MfG Alex

Hi Alex,

Nicht unter VB, also wenn es ein eigenstaendiges proggi werden
soll!

hmmm, Stimmt, das ist doch für Joe … VB. :smile:
Ich habe dabei an Reinhard gedacht, der braucht alles für VBA, also API statt Steuerelemente.

Ich habe mal wieder VB5 bei mir drauf genagelt :smile: Spilt ,
Replace etc. gehen da natuerlich nicht. Aber dafür tippsel ich
die Routinen bei Bedarf nach.
Ich bin bis jetzt davon ausgegangen das Joe eine VB Anwendung
haben wollte? Das sehe ich doch richtig oder?

Ja, klar. Ich war etwas durcheinander.

Aber wann denkst du denn bist du soweit
mit der Geschichte? So langsam komme ich an einen Punkt wo es
auf die Kommunikation ankommt :smile:

Nicht bevor ich an einem Rechner mit VB sitze. Das hier ist
ein MAC. :smile:

Schöner Salat und lass mich raten, das kann noch ne Weile
dauern? :frowning:

Ja, leider. Ich habe in den letzten zwei Jahren monatlich viel mehr Geld ausgeben müssen, als ich Gehalt bekommen habe. Das ist jetzt zwar vorbei, nun muss ich aber wieder aus dem Loch kriechen.
So lange ich unter Null bin, muss die Reaparatur warten.

Ich hab mal noch so einiges dazu gebastelt und werde heute
Abend mal 3 Formen posten, somit sieht man das erste
zusammenspiel der Module :wink:

Ich werde es nicht testen können. :frowning:
In der Firma sind die Möglichkeiten begrenzt, die Zeit auch.

Hmm, naja dann spiele ich da halt noch weiter mit rum *feix*
und baste l dann noch das eine oder andere ein. Vlt. die
Kommunikation anfangen, denn ich gehe mal von aus, wenn wir
Winsock verwenden werden, das wir dann den selben Weg gehen
werden. Also ein indiziertes Winsock drauf. Das mit dem 0 geht
auf Listen und bei bedarf werden Elemente nachgeladen und
bauen den Connect auf. Wolltest du das so machen?

Ja, ich hatte an Winsock gedacht.
Der Server lauscht, der Client sucht nach dem Server und stellt die Verbindung her. Sobald der Client ruft, öffnet der Server einen weiteren Port, antwortet und fragt erst nach der Berechtigung, bevor Daten fließen. Das wird einfacher als das was ich schon mal hatte, weil ja schon klar ist, wer Server und wer Client wird.

Mal sehen, wie morgen die Mittagspause aussieht …

Gruß Rainer

Hallo Rainer,

Puh Schweiss von der Strin wische :wink:

Also ich hab da ma im Server schon angefangen. Ich poste dir mal den relevanten Teil :smile:

Private Sub RunServer()
 With Winsock(0)
 .LocalPort = Port
 .Listen
 End With
 If Winsock(0).State = sckListening Then
 Me.Caption = App.ProductName & " - Online Modus"
 cmdofflineModus.Enabled = True
 txtServerStatus.Text = "Abhorchen"
 ReDim Client(0) As Data
 If Setting And &H4 Then
 Timer2.Enabled = True
 Else
 txtTimetoScan.Text = "Deactiviert!"
 End If
 End If
End Sub

Private Function GetNextIndex() As Integer
Dim I As Integer
For I = 1 To Winsock.Count - 1
 If Winsock(I).State = sckClosed Then
 GetNextIndex = I
 Exit Function
 End If
Next I
GetNextIndex = Winsock.Count
End Function

Private Sub Winsock\_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Dim Count As Integer
 Count = GetNextIndex
 If Count \> Winsock.Count - 1 Then
 Load Winsock(Count)
 ReDim Preserve Client(Count) As Data
 End If
 Winsock(Count).LocalPort = Port
 Winsock(Count).Accept requestID
End Sub

Private Sub Winsock\_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
 On Error GoTo errhandler
 If Len(txtError) \> 0 Then txtError.Text = txtError.Text & vbNewLine
 txtError.Text = txtError.Text & Description
 Exit Sub
errhandler:
 txtError.Text = ""
 Resume
End Sub

Private Sub Winsock\_DataArrival(Index As Integer, ByVal bytesTotal As Long)
 Dim Msg As String
 Dim Befehl As Long
 Dim Size As Long
 Winsock(Index).GetData Msg
 Befehl = StringToDecimal(Left(Msg, 1))
 Size = StringToDecimal(Mid(Msg, 2, 1))
 If Len(Msg) - 2 Size Then
 'Fehlerhafte Übertragung!
 Call SendData(1, Winsock(Index))
 End If
 Msg = Mid(Msg, 3)
 Call BefehlsBearbeitung(Befehl, Msg, Index, bytesTotal)
End Sub

Private Sub BefehlsBearbeitung(Befehl As Long, Msg As String, Index As Integer, bytes As Long)
Client(Index).Recieve = bytes
Select Case Befehl
 Case 1 'Anmeldung am Server
 Client(Index).Sent = 0
 lstClient.AddItem Msg
 lstClient.ItemData(lstClient.NewIndex) = Index
 Call SendData(2, Winsock(Index))
End Select
End Sub

Private Sub Winsock\_SendProgress(Index As Integer, ByVal bytesSent As Long, ByVal bytesRemaining As Long)
 Client(Index).Sent = Client(Index).Sent + bytesSent
End Sub

'IM Modul Allgemein, dann noch folgendes

'Zahl in ein String umwandeln
Public Function DecimalToString(ByVal Number As Long) As String
 Dim r As Long
 Do While Number \> 255
 r = Number Mod 256
 Number = Number \ 256
 DecimalToString = Chr$(r) & DecimalToString
 Loop
 DecimalToString = Chr$(Number) & DecimalToString
End Function

'String in eine Zahl umwandeln
Public Function StringToDecimal(ByVal Number As String) As Long
 Dim I As Long, n As Long
 n = Len(Number)
 For I = n To 1 Step -1
 StringToDecimal = StringToDecimal + 256 ^ (n - I) \* Asc(Mid$(Number, I, 1))
 Next I
End Function

'Wir senden Daten, Nur einzelne Flags /Bits etc., keine komplette Datei!
Public Sub SendData(Befehl As Long, W As Winsock)
Dim Msg As String
 'Befehl
 ' \*1 = Fehlerhafter Transfer
 ' \*2 = Erfolgreicher Login
 Msg = DecimalToString(Befehl)
 W.SendData Msg
End Sub

So kurz zur Erklärung

Client ist ein Array welchen den Typen Data beinhaltet.
Unter dem Typen Data, steht nur

Send as long 'Gesendete Bytes
Recieved as Long 'Empfangene Bytes

Das ist nur für die Statistik *gg*
Es kommt eine Anfrage, rein. Der Server lädt ggfls. ein Control nach und akzeptiert die Verbindung! Gleichzeitig wird das Array erhöht.
Sowie der Client das Connect Event ausgelöst bekommt, sendet er seinen Rechnernamen an den Server. Dieser traegt diesen in die Liste ein.
Die empfangenen und gesendeten Bytes werden im Array gespeichert :smile:
Sollte die Datenübertragung fehlerhaft gewesen sein, so bekommt der Client eine Mitteilung.
Sicher fragst du dich nun warum ich die Zahl in einen String umwandle. Ich habe Zahlen als Long genommen. Das waeren 4 Bytes. Durch die Umwandlung in ein String kommen wir auf 1 Byte :wink:

Ich höre für heute erstmal auf. Morgen mache ich dann weiter.

Aber viel sollte es ja nicht mehr sein :smile:
Eigentlich nur noch das der Client, bei erfolgreichen Login ( er empfaengt die 1!) dann eine 2 an den Server sendet, dieser dann darauf die Synchronisation macht, das File erstellt und dieses an den Clienten sendet, der dann den Rest macht :smile:

MfG Alex

Hi Alex,

das Leichte zuerst.

Form1:

Option Explicit

Private Sub Command1\_Click()
 Me.Caption = IPNr("MeinServer")
End Sub

als Beispiel.

Nun das Modul:

Option Explicit

Private Declare Function gethostbyname Lib "WSOCK32" \_
 (ByVal szHost As String) As Long
Private Declare Sub CopyMemoryIP Lib "kernel32" Alias "RtlMoveMemory" \_
 (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)

Private Type HOSTENT
 hName As Long
 hAliases As Long
 hAddrType As Integer
 hLen As Integer
 hAddrList As Long
End Type

Public Function IPNr(ByVal HostName As String) As String
 Dim IP As Long
 Dim IPStr As String
 Dim Host As HOSTENT
 Dim dwIPAddr As Long
 Dim tmpIPAddr() As Byte
 Dim I As Integer
 Dim sIPAddr As String
 Dim SrvStr As String
 SrvStr = Space(256)
 SrvStr = Replace(SrvStr, " ", Chr(0))
 Mid(SrvStr, 1, Len(HostName)) = HostName
 IP = gethostbyname(SrvStr)
 CopyMemoryIP Host, IP, Len(Host)
 CopyMemoryIP dwIPAddr, Host.hAddrList, 4
 ReDim tmpIPAddr(1 To Host.hLen)
 CopyMemoryIP tmpIPAddr(1), dwIPAddr, Host.hLen
 For I = 1 To Host.hLen
 sIPAddr = sIPAddr & tmpIPAddr(I) & "."
 Next
 IPNr = Mid$(sIPAddr, 1, Len(sIPAddr) - 1)
End Function

Gruß Rainer

Hi Alex,

ich fange an, den Überblick zu verlieren. :smile:

Hattest Du irgendwo gefragt, wie Du zum Pfad kommst um Dateien zu kopieren?

Die IP holen wir ja schon mit dem Servernamen, dann haben wir auchg den Pfad. Ich lese als Beispiel mal ein Textfile vom Server.

Option Explicit

Private Sub Command1\_Click()
 Dim zl As String
 Open "\\" + Server + "\" + Pfad + File For Input As #1
 While Not EOF(1)
 Line Input #1, zl
 Text1.Text = Text1.Text + zl + vbCrLf
 Wend
 Close #1
End Sub

Gruß Rainer

Moin,
so nachdem ich gestern mal wieder so richtig die Sau rausgelassen habe werde ich heute mal wieder was Sinnvolles machen:
Ich habe mir gerade nochmal den ganzen Code angeschaut, finde aber so richtig noch kein einstieg :frowning:
Kann ich euch irgendwie unterstützen ?
bis später mfg jonny

Hallo Joe,

schoen das du dich mal wieder meldest.
Nicht das du denkst, ich war faul gewesen *feix* nein, nur die Formen hier zu posten waere wahnsinn :s
Ich hab da mal so einiges schon zusammen und wenn du mir sagst das deine oben angegebene Email Adresse stimmt, so lasse ich dir das mal alles zukommen.
Die Server Application ist fast fertig!
Am besten ist es wenn du sie dir mal anschaust und bescheid sagst, was dir net passt oder was du noch mit reinhaben magst.
Auch stellen sich mir nun folgende Fragen, worauf ich gerne eine Antwort haette :s

Es wird ja ein Abgleich, einmal manuell stattfinden und einmal auch automatisch ( je nach Einstellung)
Wenn sich nun ein Client am Server anmeldet. So schaut dieser in der DB nach den Daten nach und macht dann eigentlich gleich die Synchronisation. Wenn nun aber der Client zum ersten male gestartet wird, so hat der Server ja die Daten nicht! Der Server fordert nun die Daten vom Client an. Soweit ist das kein Thema!
ABER: Was ist wenn der Client und der Server sich synchronisiert haben. Der Server hat ja dann die Daten die auf dem Clienten sind. Wenn nun der Client nicht im Netzwerk haengt und er manuell Daten löscht oder hinzufügt, so stimmen dann die Angaben im Server nicht mehr! Ero muesste der Client seine Daten jedesmal dem Server mitteilen. Sprich er muss erst alle seine Daten einlesen und sie dem Server mitteilen.

Wie möchtest du es haben.

Variante 1:
Wir gehen davon aus das die Daten auf dem Server stimmen!(unsicher)

Variante 2:
Wir gehen sicher und schicken jedesmal dem Server die Daten! Sprich jedesmal alle Daten einlesen und sie dem Server mitteilen!(sicher)

Moin,
so nachdem ich gestern mal wieder so richtig die Sau
rausgelassen habe werde ich heute mal wieder was Sinnvolles
machen:
Ich habe mir gerade nochmal den ganzen Code angeschaut, finde
aber so richtig noch kein einstieg :frowning:

Ach das ist ganz easy. Schau dir das mal an, was ich dir gleich schicken werde :wink:

Kann ich euch irgendwie unterstützen ?
bis später mfg jonny

Jups, indem du mir die Antworten gibst :stuck_out_tongue:
PS: Um wieviele Daten handelt es sich eigentlich?
Ich habe mal ein Scan mit ca. 60.000 Dateien durchgefuehrt und es hat, also das ermitteln der Daten und das schreiben in die DB ca. 3 Minuten gedauert :frowning:

MfG Alex

Hi Alex
die mail stimmt, [email protected]

Wie möchtest du es haben.

Nochmal zur Beschreibung:
Der Server Überprüft Daten die auf einem Netzlaufwerk liegen.
Nun fragt der Client den Server ob auf dem Netzlaufwerk neuere Daten liegen. Wenn ja kopieren. Bei der ersten verbindung mit dem Server muss natürlich alles, also alles kopiert werden.
Da es zu 99,9% so ist das neue Daten immer vom Netzlaufwerk kommen, also auf dem Clienten erstellte oder veränderte Daten nicht aufs Netzlaufwerk kopiert werden müssen, reicht Variante 1.

Variante 1:
Wir gehen davon aus das die Daten auf dem Server
stimmen!(unsicher)

Was aber auch nicht schlecht wäre :stuck_out_tongue:
Zu jedem Pfad am Clienten die Option wählen zu können: Daten auch richtung Server/Pfad synchronisieren. aber wie gesagt Variante 1 reicht.

Danke, bis später mfg joe

Hallo Joe,

die mail stimmt, ********

Fein, ich habe dir soeben mal den Entwurf gesendet.
Schaue es Dir mal an :smile:
Ich habe es aber unter VB5 getippselt. Solltest du die version 6 verwenden, so musst du aus dem Modul Allgemein, die Function Replace löschen :smile:
Ich habe dir einige Vermerke mit dazu gemacht, damit du weisst, was wie wo gemacht wird :smile:
Gib mir mal bitte ein Feedback, ob ich auf dem richtigen Wege bin. Auch schaue mal b alles so funzt wie du es dir wünschst oder ob evtl. ein Fehler auftritt.
Über ein Feedback waere ich dankbar :smile:

Nochmal zur Beschreibung:
Der Server Überprüft Daten die auf einem Netzlaufwerk liegen.

Ok, das macht der Server bereits. Beim ersten Start kommst du in die Einstellungen. Dort musst du nur die Pfade angeben, wo er nach Daten suchen soll. Du kannst da beliebig viele angeben :smile: Die Daten werden dann eingelesen und in der DB gespeichert, die du auch beim Start anlegen musst. Aber das siehst du dann :wink:

Nun fragt der Client den Server ob auf dem Netzlaufwerk neuere
Daten liegen. Wenn ja kopieren. Bei der ersten verbindung mit
dem Server muss natürlich alles, also alles kopiert werden.

Ok, ich hab es derzeit so realisiert. Der Server wartet auf eine Anfrage vom Clienten, alla, du ich will sync. Dann schaut er ob er daten hat, wenn ja, dann sendet er sein Ok und beginnt mit der sync. Fehlen die Daten, so verweigert er das Sync. Der Client bekommt das mit und sendet dann sein File. Wenn der Server das hat und das OK dem Clienten ereilt, so sendet er erneut eine Anfrage, zur Sync. Diesmal sind die daten da und der Server macht das auch :smile:
Ist doch ok so, oder?
Auch hast du die möglichkeit vom server aus die Sync. mit einem Clienten aufzurufen. Der Client kann natuerlich auch seine Daten jederzeit dem Server senden, ohne zu sync. Die Sync. kann man jederzeit manuell aufrufen :smile:

Da es zu 99,9% so ist das neue Daten immer vom Netzlaufwerk
kommen, also auf dem Clienten erstellte oder veränderte Daten
nicht aufs Netzlaufwerk kopiert werden müssen, reicht Variante
1.

Ok, das erpart mir vieles :wink:

Variante 1:
Wir gehen davon aus das die Daten auf dem Server
stimmen!(unsicher)

Was aber auch nicht schlecht wäre :stuck_out_tongue:
Zu jedem Pfad am Clienten die Option wählen zu können: Daten
auch richtung Server/Pfad synchronisieren. aber wie gesagt
Variante 1 reicht.

Das waere auch kein Thema, nur muessten wir dann die Einstellungen ändern und dort ne Option machen, welche Files bindend überprüft werden muessen. Aber lass uns erstmal Variante 1 einschlagen. Das andere dann rein zu tippseln, sollte net das Thema sein :smile:

Danke, bis später mfg joe

Nichts zu danken :wink: Ich waere aber froh wenn ich bald ein Feedback bekomme, da ich sonst net weiter komme :s

Um wieviel Daten handelt es sich denn eigentlich im Schnitt?

MfG Alex

PS: ich wollte es erst machen, das der CRC von jedem File ermittelt wird und dann dem Clienten mitgeteilt wird, so wird sicher gestellt, das der Client auch die Daten ordnungsgemaess erhalten hat. Aber wenn ich das reinhaemmere, dann brauch das Proggi bestimmt 5 mal solange, weil das ermitteln des CRC einiges an zeit in Anspruch nimmt :s

Wenn es net viele Daten sind und kleine File’s, dann waere das aber noch ne Option die man einbauen kann :smile:
Aber das musst du wissen :smile:

MfG Alex

Hallo Joe,

soeben bemerkt :s Du musst ma fix was aendern.
Ich habe etwas auskommentiert, zu testzwecken :s
Ändere mal in der Form_Load in der Form Start wiefolgt :smile:

Private Sub Form\_Load()
On Error Resume Next
Dim Maus As New WaitCursor
 Call Maus
 Me.Caption = App.ProductName & " - Offline Modus"
 Call RemoveX(Me)
 MustRun = False
 Me.Show
 If FirstTime Then
 'Erster Start
 MustRun = True
 Set Maus = Nothing
 MsgBox "Die Server Anwendung wird zum ersten mal gestartet!" & vbNewLine & "Es müssen verschiedene Aktionen durchgefuehrt werden!", vbInformation
 Einstellungen.Show vbModal
 CreateDatabase.Show vbModal
 If PasswordRequired Then
 If OpenDatabase(DatenbankPfad, Temp.Label1.Caption) Then OpenRecordsets
 Else
 If OpenDatabase(DatenbankPfad) Then OpenRecordsets
 End If
 If Not DBISOpen Then
 MsgBox "Es ist ein unvorhersehbarer Fehler aufgetreten beim öffnen der Datenbank!" & vbNewLine & "Dies ist aber nowendig um den Server zu starten!" & vbNewLine & "Die nötigen Einstellungen wurden aber vorgenommen. Versuchen Sie den Server neu zu starten oder die Datenbank erneut zu laden!", vbCritical
 MustRun = False
 Exit Sub
 End If
 Else
 'Normaler Start(2'er oder höher...)
 'Automatisches laden der letzten DB
 If (Setting And &H8) And (DatenbankPfad "") Then
 If PasswordRequired Then
 'Password erforderlich
 Set Maus = Nothing
 Passwordeingabe.Show vbModal
 If Temp.Check1.Value = 0 Then
 MsgBox "Sie haben kein Password angeben, obwohl eines erforderlich ist!" & vbNewLine & "Die Datenbank wird nicht geladen!", vbInformation
 Exit Sub
 End If
 'DB laden!
 Set Maus = New WaitCursor
 Maus
 If OpenDatabase(DatenbankPfad, Temp.Label1.Caption) Then OpenRecordsets
 Else
 'Kein PW erforderlich
 If OpenDatabase(DatenbankPfad) Then OpenRecordsets
 End If
 Else
 Exit Sub
 End If
 If DBISOpen Then
 MsgBox "Die Datenbank wurde erfolgreich geladen!", vbInformation
 Else
 MsgBox "Es ist ein unvorhersehbarer Fehler aufgetreten beim laden der Datenbank!", vbCritical
 Exit Sub
 End If
 End If
 'Abfrage über DBISOPEN
 If DBISOpen Then
 MustRun = True
 Set Maus = Nothing
 Scan.Show vbModal ' Wieder einschalten!
 End If
 'Kommunikation aufbauen
 Call RunServer
 MustRun = False
 Timer1.Enabled = True
End Sub

Eigentlich geht es nur um die Zeile

 Scan.Show vbModal ' Wieder einschalten!

Ist sie auskommentiert, wird der Scan net ausgefuehrt und die Daten ergo auch nicht eingetragen :s

MfG Alex

Moin Alex.

Eigentlich geht es nur um die Zeile

Scan.Show vbModal ’ Wieder einschalten!

Ich habe sie wieder einkommentiert.

Bei der ersten Suche, also nach dem ersten Start hatte ich einen Fehler bekommen. Beim 2ten Start lief alles problemlos.
Type Mismatch !13! Habe nochmal die Registry einträge und die Datenbank gelöscht, aber gleicher fehler beim ersten start. beim 2ten läuft alles einbahnfrei.

Private Sub Suche()
Dim i As Integer
Dim Maus As New WaitCursor
Call Maus
Call DeleteEntry 'Datenbank Eintraege löschen
Set nSearch = New cFindFile
------\>For i = LBound(PathToScan) To UBound(PathToScan) 

Habe die Replace Funktion rausgenommen. Die gibt es in Vb6 Pro jetzt schon ab werk ?

Bin echt schwer beeindruckt ... Der Server kann alles was können soll!
ich spiele noch ein paar sachen durch, nach dem frühstück.

Es sind im moment , also alle ordner in summe. 15GB Daten und 55.000 datein. 
bis gleich mfg joe

Hallo Joe,

Oki :wink:

Bei der ersten Suche, also nach dem ersten Start hatte ich
einen Fehler bekommen. Beim 2ten Start lief alles problemlos.

Dann sollte es nicht an der Suche liegen! Kannst du die Zeile oder die Sub ausfindig machen, wo er da aussteigt?
Beim anlegen der DB, also wenn etwas schief läuft dann rufe ich den Err 13 auf. Aber der wird da abgefangen :s
Lasse das proggi mal im Einzelschritt durchlaufen, so siehst du in welcher zeile er aussteigt.
Bei mir läuft er einwandfrei durch :smile:

Type Mismatch !13! Habe nochmal die Registry einträge und die
Datenbank gelöscht, aber gleicher fehler beim ersten start.
beim 2ten läuft alles einbahnfrei.

Private Sub Suche()
Dim i As Integer
Dim Maus As New WaitCursor
Call Maus
Call DeleteEntry 'Datenbank Eintraege löschen
Set nSearch = New cFindFile
------>For i = LBound(PathToScan) To UBound(PathToScan)

Habe die Replace Funktion rausgenommen. Die gibt es in Vb6 Pro
jetzt schon ab werk ?

Richtig :smile: VB5 kennt die noch nicht :wink:

Bin echt schwer beeindruckt … Der Server kann alles was
können soll!
ich spiele noch ein paar sachen durch, nach dem frühstück.

Naja da habe ich noch die eine oder andere Idee :wink:

Es sind im moment , also alle ordner in summe. 15GB Daten und
55.000 datein.

bis gleich mfg joe

Oki. Aber wie gesagt, versuche das Proggi mal im Einzelschritt durchlaufen zu lassen. Sprich mit F8 jede Zeile durchlaufen lassen oder halt Haltepunkte setzen. So kommst du auf die Schliche, wo der Fehler ausgelöst wird!

mfG Alex

moin, schon wach OO:?

Debugger und Stoppunkt sind sich einig
in der Private Sub Suche() beim
For i = LBound(PathToScan) To UBound(PathToScan)
ist schluss.
mfg joe

moin, schon wach OO:?

Moin,

nun schon seit 7 Uhr :smile:

Ok, da kommen wir der Sache schon naeher :wink:
Hast du mal geschaut was in PathToScan für Daten stehen?
Das sollte ein Array sein, mit deinen Verzeichnissen die du durchsuchen möchtest. Ich bastel da ma noch fix ne Abfrage rein, die in der naechsten Version dann mitkommt :smile:

In den Einstellungen, musst du doch div. Verzeichnisse angeben, die durchsucht werden sollen? Welche hast du denn da angegeben?
Desweiteren schaue mal in der Registry nach, Unter " HKEY_CURRENT_USER /SERVER/SYNCHRONISATION. Welche Daten sind denn dort eingetragen?

Debugger und Stoppunkt sind sich einig
in der Private Sub Suche() beim
For i = LBound(PathToScan) To UBound(PathToScan)
ist schluss.
mfg joe

MfG Alex

Hallo Joe,

anbei noch fix was anderes. Wenn du das progg startest, dann springt er doch in die Sub „GetData“ Werden dort die Daten in PathToScan ordentlich eingetragen?
Wenn du erneut aus dem menu Einstellungen aufrufst, wird die Sub „LoadData“ aufgerufen. Werden dort die Daten ordnungsgemaess eingelesen?
Welche Daten stehen dann in der Liste da ?

Ändere mal bitte in der Form Scan die sub Suche, weifolgt ab

Private Sub Suche()
Dim i As Integer
Dim Maus As New WaitCursor
Call Maus
Call DeleteEntry 'Datenbank Eintraege löschen
Set nSearch = New cFindFile
**If Not IsArray(PathToScan) Then Exit Sub  
For i = LBound(PathToScan) To UBound(PathToScan)  
 With nSearch  
 .sFileFlag = FILE\_ATTRIBUTE\_ALLTYPES\_WITHOUT\_DIR  
 .sFileToFind = "\*.\*"  
 .sInclSubfolders = True  
 .sSearchpath = CStr(PathToScan(i))  
 .sStartSearch  
 End With  
Next i  
txtAction.Text = ""  
MsgBox "Es wurden alle Daten eingetragen!" & vbNewLine & "Der Server wird nun gestartet", vbInformation  
Unload Me  
End Sub**  

Wie verhaelt es sich jetzt, bei der Anweisung?

**If Not IsArray(PathToScan) Then Exit Sub**  

Macht er im Source weiter. Geht er auf Exit Sub oder bekommst du nach wievor eine Fehlermeldung?

MfG Alex

Hallo Joe,

ich hab den Fehler gefunden :wink: Mich wundert es nur, das es mir selbst noch net aufgefallen ist :s
Vergiss das alles mal was ich dir geschrieben habe. Ich ändere meine Version mal ab und bastel noch fix 2 oder 3 Sachen dazu. Danach ist der Server eigentlich Fertig (wenn ich mal wieder nichts uebersehen habe)
Ich denke mal das ich das heute spät Abends fertig habe und dann sende ich es dir wieder via Email. Dann kannst den ausgiebig testen *zwinker*
Sollte Dir noch etwas einfallen, was benötigt wird oder was man anders machen kann, so gebe einfach bescheid :smile:

Wer Interesse an den Source hat, so soll er sich mal bitte bei mir unter [email protected] melden.
Über Beta Tester würde ich mich freuen :smile:

MfG Alex

Hallo Rainer,

das Leichte zuerst.

Wenn es denn nur so einfach gewesen waere. Nach kopieren deines Source und ausführen, bruellte mich VB erstmal akurat an, alla
„Einsprungspunkt in DLL nicht gefunden“
Nunja, dann habsch mich ma schlau gemacht und kam darauf das die declaration der API falsch ist. Diese habe ich fix geaendert auf

Private Declare Function GetHostByName Lib "wsock32.dll" Alias "gethostbyname" (ByVal Hostname As String) As Long

und volla funktioniert 1A :smile:

MfG Alex